Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Userform-Elemente mit Schleife umbenennen
25.01.2017 22:45:09
Andreas
Hallo,
ich habe mir eine Userform zusammengebastelt, die mit Einstellungswerten aus einer Tabelle geändert werden soll:

Private Sub UserForm_Initialize()
Dim a As String
If Worksheets("Dienstoptionen").[c2] = True Then
Me.MultiPage1.Page1.Caption = Worksheets("Dienstoptionen").[B2]
Else
Me.MultiPage1.Page1.Caption = ""
Me.MultiPage1.Page1.Enabled = False
End If
If Worksheets("Dienstoptionen").[c7] = True Then
Me.MultiPage1.Page2.Caption = Worksheets("Dienstoptionen").[B7]
Else
Me.MultiPage1.Page2.Caption = ""
Me.MultiPage1.Page2.Enabled = False
End If
End Sub

Bis hier funktioniert alles gut, aber das ist erst der Anfang. In der Userform geht es bis Page9 und auch weitere Änderungen an z.B. mehreren Commandbutton in den einzelnen Pages möchte ich noch machen.
Wie bekomme dies in eine Schleife? "Page1", "Page2" usw. müsste sicherlich durch eine Variable ersetzt werden, was ich aber nicht hinbekomme.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
25.01.2017 23:42:01
Mullit
Hallo,
im Prinzip so, und schmeiß die unsägliche Bracket-Notation für Zellen raus...
Option Explicit

Private Sub CommandButton2_Click()
Dim lngIndex1 As Long, lngIndex2 As Long
With MultiPage1
    For lngIndex1 = 0 To .Pages.Count - 1
        With .Pages(lngIndex1)
            For lngIndex2 = 0 To .Controls.Count - 1
                 Debug.Print .Name, .Controls(lngIndex2).Name
            Next
        End With
    Next
End With
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
25.01.2017 23:47:00
Luschi
Hallo Andreas,
das funktioniert so:

Dim i1 As Integer, i2 As Integer
i1 = Me.MultiPage1.Pages.Count
For i2 = 1 To i1
Me.MultiPage1.Pages(i2 - 1).Caption = "Seite " & i2
Next i2
Gruß von Luschi
aus klein-Paris
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 11:25:15
Andreas
besten Dank,
damit komme ich weiter
Gruß Andreas
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 12:07:22
Andreas
Hallo,
ich glaube ich war zu voreilig. Das Umbenennen der Pages läuft jetzt.
Meine Meinung mit dem selben Prinzip weiter zu machen war dann wohl doch ein Irrtum. Wenn ich in der nächsten Schleife (for l=...) das "Pages(i2 - 1)" einsetzte geht schon nichts mehr.
Private Sub UserForm_Initialize()
Dim i1 As Integer, i2 As Integer
Dim k As Integer
Dim l As Integer
i1 = Me.MultiPage1.Pages.Count
k = 2
For i2 = 1 To i1
If Worksheets("Dienstoptionen").Cells(k, 3) = True Then
Me.MultiPage1.Pages(i2 - 1).Caption = Worksheets("Dienstoptionen").Cells(k, 2)
For l = 10 To 19
Me.MultiPage1.Pages(i2 - 1).Frames(l).Caption = "Test"
Next l
Else
Me.MultiPage1.Pages(i2 - 1).Caption = ""
Me.MultiPage1.Pages(i2 - 1).Enabled = False
End If
k = k + 5
Next i2
End Sub

Gruß Andreas
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 12:36:29
Mullit
Hallo,
...hmm, das scheint mir auch so, hast Du Dir mein Bsp. überhaupt angesehen...?
Eine Frames-Auflistung gibt es nicht, Du mußt durch die Controls-Auflistung loopen...
Gruß, Mullit
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 14:16:33
Andreas
Hallo Mullit,
ich habe es mit dem anderen Beispiel versucht, da ich das mit meimen dürftigen VBA-Kenntnissen noch durchblickt habe und bis dahin für mich umbauen konnte. Für meine weiteren Vorhaben ist es wohl doch nicht das richtige.
Leider kann ich als VBA-Anfänger nichts mit der Zeile "Debug.Print .Name, .Controls(lngIndex2).Name" in deinem Beispiel anfangen. was passiert hier? Und an welcher Stelle und wie werden die Beschriftungen der Pages geändert?
Gruß Andreas
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 15:57:22
Mullit
Hallo,
Und an welcher Stelle und wie werden die Beschriftungen der Pages geändert?

gar nicht, da werden im Direktfenster nur die Namen der Pages und deren Controls ausgegeben, das sollte nur den Zugriff per Schleife demonstrieren, den Rest wollte ich jetzt Dir überlassen...
Aber das würde dann so natürlich auch mit Luschis Ansatz funktionieren:
Option Explicit

Private Sub CommandButton1_Click()
Dim lngIndex1 As Long, lngIndex2 As Long, lngCount As Long
With MultiPage1
    For lngIndex1 = 0 To .Pages.Count - 1
        lngCount = 0
        With .Pages(lngIndex1)
            .Caption = "MyPage" & lngIndex1 + 1
            For lngIndex2 = 0 To .Controls.Count - 1
                If TypeOf .Controls(lngIndex2) Is MSForms.Frame Then
                   lngCount = lngCount + 1
                   .Controls(lngIndex2).Caption = "MyFrame" & lngCount
                End If
            Next
        End With
    Next
End With
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Stellt sich allerdings die Frage, ob das so benötigt wird, wenn Du die Frames alle gleich bennen willst, kannst Du darauf auch direkt über die Form zugreifen...
Gruß, Mullit
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 17:06:54
Andreas
Hallo Mullit,
erst mal vielen Dank.
mit deinem Code funktioniert die Bschriftung der Pages wieder tadellos. Mit den Frames komme ich aber nicht richtig klar. Ab der 2. Page ist die Reihenfolge der Bezeichnungen ("MyFrame1"...)völlig durcheinander. Ich habe auf Jeder Page 10 Frames, die mit Werten aus einer Tabelle bezeichnet werden sollen. (auf Page1 z.B. Frame 11-19, auf Page2 Frame 20-29 usw.). Dann gibt es aber auch noch andere Frames auf den jeweiligen Pages, an denen nichts verändert werden soll. Gibt es eine Möglichkeit einem bestimmten Frame eine bestimmte Bezeichnung zuzuordnen und babei auch welche auszulassen?
Anzeige
AW: Userform-Elemente mit Schleife umbenennen
26.01.2017 17:13:43
Mullit
Hallo,
klaro, Du fragst bspw. entweder den inneren Schleifenindex der Frames oder deren Position ab und schließt darüber bestimmte aus oder nicht....
Gruß, Mullit

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige