TextBox in UserForm dynamisch ansprechen
Hallo!
Ich habe ein UserForm mit 10 TextBoxen mit den Namen: TextBoxA1, TextBoxA2, TextBoxA3, ...
Ich möchte jetzt mit einer Schleife die einzelnen TextBoxen ansprechen, mein Code sieht bis jetzt so aus:
Sub Test()
Dim tb As TextBox
Dim i As Integer
i = 1
Do While i < 11
With tb
.Name = "TextBoxA" & i
End With
Worksheets("Tabelle1").Cells(1, 1).Value = tb.Value
Loop
End Sub
Das funktioniert nur leider so nicht, hat jemand einen Tipp für mich?
Viele Grüße
Ich habe ein UserForm mit 10 TextBoxen mit den Namen: TextBoxA1, TextBoxA2, TextBoxA3, ...
Ich möchte jetzt mit einer Schleife die einzelnen TextBoxen ansprechen, mein Code sieht bis jetzt so aus:
Sub Test()
Dim tb As TextBox
Dim i As Integer
i = 1
Do While i < 11
With tb
.Name = "TextBoxA" & i
End With
Worksheets("Tabelle1").Cells(1, 1).Value = tb.Value
Loop
End Sub
Das funktioniert nur leider so nicht, hat jemand einen Tipp für mich?
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 71520
Url: https://administrator.de/contentid/71520
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
8 Kommentare
Neuester Kommentar
Versuchs mal so:
Es werden alle steuerelemente auf der Form durchgesucht und wenn der name "TextBox" & ti (ti=nummer der textbox) lautet ist das das Steuerelement dieser Textbox und er kann verwendet werden (Hier wird der Text der darinsteht angezeigt).
miniversum
For ti = 1 To 10
For ci = 0 To UserForm1.Controls.Count - 1
If UserForm1.Controls.Item(ci).Name = "TextBox" & ti Then
MsgBox UserForm1.Controls.Item(ci).Text
End If
Next ci
Next ti
Es werden alle steuerelemente auf der Form durchgesucht und wenn der name "TextBox" & ti (ti=nummer der textbox) lautet ist das das Steuerelement dieser Textbox und er kann verwendet werden (Hier wird der Text der darinsteht angezeigt).
miniversum
Hallo lena123!
Als Alternative könntest Du auch ein "control array" (dynamisch) erstellen - das folgende Beispiel basiert auf einer UserForm mit 2 CommandButtons:
Die dynamischen Steuerelemente werden per Click auf die bereits geladene UserForm erst erzeugt. Die Verwendung der indizierten Controls wird dann anhand der beiden Buttons demonstriert.
Grüße
bastla
Als Alternative könntest Du auch ein "control array" (dynamisch) erstellen - das folgende Beispiel basiert auf einer UserForm mit 2 CommandButtons:
Option Explicit
Dim Lb() As Control, Tx() As Control
Private Sub CommandButton1_Click()
Tx(3).BackColor = vbRed
End Sub
Private Sub CommandButton2_Click()
MsgBox Tx(3).Text
End Sub
Private Sub UserForm_Click()
Dim i As Integer
For i = 1 To 4
Me.Height = i * 20 + 40
ReDim Preserve Lb(i) As Control, Tx(i) As Control
Set Lb(i) = Controls.Add("Forms.Label.1", "lbl_" & CInt(i), True)
With Lb(i)
.Top = i * 20 + 2
.Left = 10
.Width = 58
.Height = 12
.Caption = "Beschriftung " & i & ":"
End With
Set Tx(i) = Controls.Add("Forms.TextBox.1", "txt_" & CInt(i), True)
With Tx(i)
.Top = i * 20
.Left = 70
.Width = 150
.Height = 15
.Text = "leer " & i
End With
Next
End Sub
Die dynamischen Steuerelemente werden per Click auf die bereits geladene UserForm erst erzeugt. Die Verwendung der indizierten Controls wird dann anhand der beiden Buttons demonstriert.
Grüße
bastla