Registriert seit: 19.10.2017
Version(en): 2016
21.08.2019, 13:26
(Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2019, 13:26 von diving_excel.)
Hallo!
Mittels eines VBA Codes möchte ich Textboxen eines Userforms leeren.
Code:
Private Sub CommandButton13_Click()
Dim i As Integer
Dim o As Object
For Each o In Me.Controls
If TypeName(o) = "TextBox" Then
o.Value = ""
End If
Next o
End Sub
Das funktioniert auch soweit sehr gut, nur wie müsste ich meinen Code ändern, wenn ich nur bestimmte TextBoxen leeren möchte?
Bsp.: Text Box 1-10, Text Box 20-23 und Text Box 50-100 sollen geleert werden, die anderen nicht (in diesen Fall TB 11 -19 und TB 24 -49).
EDIT: Der Button befindet sich im selben Userform wie die TB's.
Danke für eure Hinweise!
Gruß
Registriert seit: 12.06.2019
Version(en): Microsoft Office Professionak Plus 2016
Hi,
ich hatte ein ähnliches Problem & habe es wie folgt gelöst.
Musst dann halt nur angeben, welche TextBoxen geleert werden sollen :)
Private Sub CommandButton2_Click()
'Maske leeren
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
End Sub
Grüße
SteBen
Folgende(r) 1 Nutzer sagt Danke an SteBen für diesen Beitrag:1 Nutzer sagt Danke an SteBen für diesen Beitrag 28
• diving_excel
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
21.08.2019, 13:49
(Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2019, 13:49 von MisterBurns.)
Es ginge auch über eine weitere If-Bedingung
Code:
Private Sub CommandButton13_Click()
Dim i As Integer
Dim o As Object
For Each o In Me.Controls
If TypeName(o) = "TextBox" Then
If (o < 11 Or o > 19) And (o < 24 Or o > 49) Then
o.Value = ""
End If
End If
Next o
End Sub
Oder anders herum
Code:
Private Sub CommandButton13_Click()
Dim i As Integer
Dim o As Object
For Each o In Me.Controls
If TypeName(o) = "TextBox" Then
If Not (o >= 11 And o <= 19) Or (o >= 24 And o <= 49) Then
o.Value = ""
End If
End If
Next o
End Sub
Schöne Grüße
Berni
Registriert seit: 19.10.2017
Version(en): 2016
Danke für beide Antworten, habe das auch zuerst so gemacht wie SteBen es mir geraten hat, aber bei sehr vielen Textboxen ist das nicht ganz geschickt :D deswegen ist die zweite Lösung Top!
Gruß und schönes Wochenende noch!
Registriert seit: 19.10.2017
Version(en): 2016
Hab noch eine alternative gefunden, falls es mal jemand braucht:
Code:
Private Sub CommandButton15_Click()
Dim o As Integer
For o = 11 To 19 'Hier den Bereich der Textboxen eintragen, welche geleert werden sollen (TB 11 - 19 zb)
Controls("Textbox" & o).Text = ""
Next o
End Sub
Gruß
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Die Alternative ist in Wahrheit aber nur dann von Interesse, wenn man einen einzigen zusammenhängenden Bereich abdecken will. Für jeden weiteren Bereich brauchst du eine eigene Schleife.
Schöne Grüße
Berni
Registriert seit: 19.10.2017
Version(en): 2016
Ja du hast recht, die Erfahrung musste ich auch machen :D Glücklicherweise passt das bei mir.
Gruß