Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Właściwości Worksheet - jak zmienić nazwę(?) arkusza?
anonim




Typ: Nie zarejestrowany
Właściwości Worksheet - jak zmienić nazwę(?) arkusza?

witam wszystkich na forum.
Jak kodem VBA zmienić właściwość name podaną w oknie właściwości w nawiasie - pierwsza pozycja?
We właściwościach arkusza podana jest 2x właściwość name.
pozdrawiam
Bogdan

09-01-2005 17:01
  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Interesujaca Cie właściwoś nazywa się CodeName i czytamy o niej:
Returns the code name for the object. Read-only String.

Note  The value that you see in the cell to the right of (Name) in the Properties window is the code name of the selected object. At design time, you can change the code name of an object by changing this value. You cannot programmatically change this property at run time.. Możesz tylko zmienić tę właściwośc zatem w okienku własciwości, rozumiem Twój ból...

ale swego czasu jak miałam bałagan niebotyczny  znalazłam coś takiego

Sub ChangeAllWorksheetCodenames()
'''' reference to the Visual Basic Extensibility library

    Dim ws As Worksheet, i As Integer

    If TypeName(ActiveWorkbook) = "Nothing" Then Exit Sub
    '''' przyporządkowanie nazw tymczasowych aby uniknąć konfliktów
    i = 0
    For Each ws In ActiveWorkbook.Worksheets
        i = i + 1
        On Error Resume Next
        ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName" ) = _
            "fubar" & i
        On Error GoTo 0
    Next ws
    '''' przyporządkowanie właściwych nazw
    i = 0
    For Each ws In ActiveWorkbook.Worksheets
        i = i + 1
        On Error Resume Next
        ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName" ) = _
            "Arkusz" & i
        On Error GoTo 0
    Next ws
    Set ws = Nothing

End Sub

spróbuj, u mnie działa, a jeśli i u Ciebie będzie ok, proszę się zarejestrować na forum nie jako anonim....jako dowód wdzięczności, bo Ci anonimi mnie stresują, nie wiem z kim rozmawiam...a ponadto "siła" forum to liczba użytkowników...

Karo


_____________________________________________
Karolina

09-01-2005 19:04
Pokaż profil karolinavb  Wyślij email do karolinavb   
Boka




Typ: neutral
Postów: 2
Zarejestrowany: Jan 2005

Śliczne dzięki za kod! Działa!
Właśnie doszukałem się :
When you create a sheet, the sheet name and code name are the same, but changing the sheet name doesn'tchange the code name, and changing the code name (using the Properties window in the Visual Basic Editor) doesn't change the sheet name

Jeszcze raz dziękuję!
Pozdrawiam
Bogdan

09-01-2005 19:53
Pokaż profil Boka  Wyślij email do Boka   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Na zdrowie, ja też dziekuję za spełnienie mojej prośby, mam nadzieję,że wszyscy, którzy logują sią anonimowo bedą się rejstrowali, każde forum znaczy tyle ile jego użytkownicy...

Pozdrawiam Karolina


_____________________________________________
Karolina

09-01-2005 22:11
Pokaż profil karolinavb  Wyślij email do karolinavb   
Boka




Typ: neutral
Postów: 2
Zarejestrowany: Jan 2005
aż mnie korci zadać to pytanie.... mozna?

Nie chcę nadużyweać czyjegoś czasu, nie mówiąc już o prawach autorskich, ale zawsze nurtowało mmie pytanie: jak wykonać w VBA takie coś (nie będę ukrywał - "takie coś" ): tak jak w help - wpisujesz "a" wyświetla się pierwsze "a", wpisujsz po "a" np "ad" idzie do "ad" wpiszesz "xx" idzie do "xx" wpiszesz "bb" itd.
Chodzi mi o np bazę danych ,żadne SQL lub  *.mdb tylko arkusz  *.xls

14-01-2005 02:41
Pokaż profil Boka  Wyślij email do Boka   
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Nie do końca rozumiem pytanie, gdzie mianowicie ma być ten elemenet czy na UserForm, czy bezpośrednio na arkuszu. Jeśli na arkuszu, wówczas należy wykorzystać kontrolkę  ActiveX ComboBox , a nie z paska narzędzi Formularze. Poniżej przykładowy kod. Można umieścić CommanButton na arkuszu i przypisać mu makro AddCombo. Poniższy kod należy umieścić w module. Istotna jest tu właściwość MatchEntry, resztę sobie jakoś dorobisz. W przypadku wykorzystania UserForm, nie trzeba dodawać oczywiście kontrolki w kodzie tylko z ToolBox, a do przypisania listy z komórek formularza należy wówczas wykorzystać właściwość RowSource przypisując jej zakres komórek ( nazwany lub nie). Wysokość i szerokość w przykładzie ustaliłam na podstawie wymiarów zakresu komórek. Sorry za błędy ale jestem w pracy(brak tez obsługi błędów)

Option Explicit

Sub AddCombo()
Dim arrItem(2) As String
arrItem(0) = "addasd"
arrItem(1) = "sdfdfgsdg"
arrItem(2) = "aaaaa"

Dim oRng As Range
Set oRng = ThisWorkbook.Worksheets("AddComboVBA" ).Range("$A$1:$B2" )
AddCmbVBA1 "CmbCaro_1", oRng
'''' można dodawać szczegóły za pmoca metody AddItem
AddToListFromList "CmbCaro_1", arrItem
Set oRng = ThisWorkbook.Worksheets("AddComboVBA" ).Range("$A$10:$B$11" )
AddCmbVBA1 "CmbCaro_2", oRng
'''' można wykorzystać Nazwy
'''' nazwa CmbRngName obejmuje komórki np $C$1:$C$6, są one wypełnione
AddToListFromNamedRange "CmbCaro_2", "CmbRngName"
End Sub

Sub AddCmbVBA1(ByVal strName As String, oRng As Range)
'''' dodanie kontrolki w kodzie do arkusza
'''' przycisk z ekierka tryb projektowania
Dim octl As Object
With ThisWorkbook.Worksheets("AddComboVBA" )
        On Error Resume Next
        .OLEObjects(strName).Delete
        .OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
        Link:=False, _
        DisplayAsIcon:=False, _
        Left:=oRng.Left, _
        Top:=oRng.Top, _
        Height:=oRng.Height, _
        Width:=oRng.Width, _
        Height:=21.75).Name = strName
End With
End Sub

Function AddToListFromList(ByVal strObjName As String, _
    arrItem() As String)
Dim oArr As Variant
With ThisWorkbook.Worksheets("AddComboVBA" )
    With .OLEObjects(strObjName)
        With .Object
            For Each oArr In arrItem
                .AddItem oArr
            Next
            .MatchEntry = fmMatchEntryComplete
            .Text = ""
        End With
    End With
End With
End Function
Function AddToListFromNamedRange(ByVal strObjName As String, _
        ByVal strNamedRange As String)
With ThisWorkbook.Worksheets("AddComboVBA" )
    With .OLEObjects(strObjName)
        .ListFillRange = strNamedRange
        With .Object
            .MatchEntry = fmMatchEntryComplete
            .Text = ""
        End With
    End With
End With
End Function


_____________________________________________
Karolina

14-01-2005 13:19
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1