Clever-Excel-Forum

Normale Version: TextBox leeren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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ß
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
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
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!
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ß
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.
Ja du hast recht, die Erfahrung musste ich auch machen :D Glücklicherweise passt das bei mir.
Gruß