laut Hilfe hat wohl jedes Objekt einer UF eine Index-Nummer, so dass ich die mit einer Schleife abarbeiten könnte. Wo aber finde ich die Index-Nummer für jedes Objekt? In den Eigenschaften jedenfalls nicht.
Danke und Gruß
David
For i = 1 To 9
Me.Controls("TextBox" & i).Value = i
Next
Den Index den Du meinst gibt es meines Wissens nur in VB, aber nicht in VBA.Dim myCtl As Control
For Each myCtl In UserForm1.Controls
If TypeOf myCtl Is MSForms.TextBox Then
myCtl.Value = Now
End If
Next
Dim myCol As New Collection
Private Sub CommandButton1_Click()
Dim myCtl As Control
For Each myCtl In myCol
myCtl.Value = Now
Next
End Sub
Private Sub UserForm_Initialize()
With Me
myCol.Add .TextBox1
myCol.Add .TextBox5
myCol.Add .TextBox7
End With
End Sub
Gruss, JogyPrivate Sub CommandButton1_Click()
Dim iIndx As Integer
For iIndx = 1 To 7
If Trim(Controls("TextBox" & iIndx)) = "" Then
MsgBox "Bitte auch die TextBox" & iIndx & " ausfüllen - danke", _
16, " Hinweis für " & Application.UserName
Exit For
End If
Next iIndx
End Sub
Gruß PeterUserForm erstellen: Öffne Excel und erstelle eine neue UserForm. Füge mehrere TextBoxen hinzu, die du später überprüfen möchtest.
TextBoxen benennen: Vergib sinnvolle Namen für die TextBoxen (z.B. TextBox1, TextBox2, ...), um die spätere Identifikation zu erleichtern.
For-Next-Schleife einrichten: Verwende eine For-Next-Schleife, um die TextBoxen durchzugehen. Hier ein einfaches Beispiel:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 10 ' Anzahl der TextBoxen
If Me.Controls("TextBox" & i).Value = "" Then
MsgBox "TextBox" & i & " ist leer."
End If
Next i
End Sub
Prüfung implementieren: Füge innerhalb der Schleife die Logik hinzu, um zu prüfen, ob die Eingaben korrekt sind, z.B. ob eine Zahl eingegeben wurde.
Fehler: TextBoxen haben keine Nummern: Stelle sicher, dass du die TextBoxen benennst, um sie in der Schleife korrekt anzusprechen. Wenn du sie nach Inhalt benennst, kann das die Identifikation erschweren.
Probleme mit der Schleifenstruktur: Achte darauf, dass die Schleifenvariable korrekt definiert ist und dass du die richtige Anzahl der TextBoxen angibst.
Index-Fehler: Der Index, den du suchst, existiert in VBA nicht wie in VB. Stattdessen musst du die TextBoxen über ihre Namen ansprechen.
Eine alternative Methode ist, alle relevanten TextBoxen in einer Collection zu speichern. So kannst du sie gezielt ansprechen:
Dim myCol As New Collection
Private Sub CommandButton1_Click()
Dim myCtl As Control
For Each myCtl In myCol
If myCtl.Value = "" Then
MsgBox myCtl.Name & " ist leer."
End If
Next
End Sub
Private Sub UserForm_Initialize()
With Me
myCol.Add .TextBox1
myCol.Add .TextBox2
myCol.Add .TextBox3
End With
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer
Dim isValid As Boolean
isValid = True
For i = 1 To 10
If Not IsNumeric(Me.Controls("TextBox" & i).Value) Then
MsgBox "Bitte gebe eine Zahl in TextBox" & i & " ein."
isValid = False
Exit For
End If
Next i
If isValid Then MsgBox "Alle Eingaben sind korrekt!"
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 10
Me.Controls("TextBox" & i).Value = i * 10 ' Beispiel: Multiplikation
Next i
End Sub
Verwende Collections: Das Speichern von Controls in einer Collection macht deinen Code flexibler und übersichtlicher.
Dokumentation lesen: Schau dir die offizielle Excel VBA-Dokumentation an, um mehr über die Verwendung von Controls und deren Eigenschaften zu erfahren.
Debugging: Nutze die Debugging-Tools von VBA, um Probleme schnell zu identifizieren.
1. Wo finde ich die Index-Nummer für Objekte in einer UserForm?
In VBA gibt es keine Indexnummer wie in VB. Du musst die Controls über ihre Namen ansprechen.
2. Was tun, wenn die TextBoxen keine Nummern haben?
Benenne die TextBoxen sinnvoll, um sie leichter im Code anzusprechen. Alternativ kannst du auch Collections verwenden.
3. Wie kann ich sicherstellen, dass nur Zahlen eingegeben werden?
Du kannst die Eingaben in einer Schleife überprüfen und sicherstellen, dass die Werte numerisch sind, bevor du sie weiterverarbeitest.