Textbox im Sub

DerStauner

Erfahrenes Mitglied
Hallo,

ich möchte folgendes verwirklichen:

ich hätte gerne ein Sub, das die Text Eigenschaft aller Controls auf "" setzt, die in der Argliste des Subs stehen. Und dazu möchte ich keine TextBox Arrays benutzen, weil es kann sein, dass ich z. B. nur 2 von 10 TextBoxes den Text ändern möchte, oder nur einem ComboBox.

ich habe es mir so vorgestellt:

Code:
Public Sub SetTextEmpty (ParamArray controls() As Variant)
For i=0 to UBound(controls)
controls(i).Text=""
Next i
End Sub

Im Code dann z. B.

Code:
SetTextEmpty "text1","text2","combo1"

wobei text1, text2 und combo1 die Namen der einzelnen Objekte sind.

Wie würde das gehen?
 
würde ich tun, aber das geht nicht, da wenn ich ParamArray benutze, dann kann ich das nur mit Variant tun.

probiere es mal.
 
*grml* Stimmt. Hatte das vergessen.

Hmmm, vielleicht so
Visual Basic:
Public Sub SetTextEmpty (ParamArray controls() As Variant)
Dim tmpControl as Control
For i=0 to UBound(controls)
Set tmpcontrol=controls(i)
tmpcontrol.Text=""
Next i
End Sub

Ist ungetestet. Mir fällt sonst nix mehr ein
 
funktioniert leider nicht.

und kann ich das machen, dass in einer for each Schleife die textboxes auf einem Form durchlaufen werden, und dann die text Eigenschaft auf "" gesetzt wird?

sonst bleibt eine - für mich - unschöne Lösung:

Public Sub SetTextEmpty(Optional txt1 As Control, Optional txt2 As Control, usw...)
End Sub

so funktioniert es
 
Zuletzt bearbeitet:
inzwischen habe ich die Lösung gefunden:

Code:
Public Sub SetTextEmpty(urlap As Form)
Dim txt As Control
For Each txt In urlap.controls
 If TypeOf txt Is TextBox Then txt.Text = ""
 If TypeOf txt Is ComboBox Then txt.Text = ""
Next
End Sub
 
AHHH *kopfAufTischSchlag* *EselsMützeAufsetz*

Das kommt davon, wenn man lauter Bäume sieht und nicht den Wald.

Was ist im obigen Zusammenhang an dieser Anweisung falsch?

SetTextEmpty "text1","text2","combo1"

Richtig, du übergibst Strings anstatt Controls!

*grml*

SetTextEmpty text1,text2,combo1

Ist richtig
 
Ja, ja, richtig, ich dachte nur, wenn ich ParamArray benutze, dann kann ich in die Argliste nur mit " " schreiben.

Aber inzwischen habe ich eine bessere Lösung gefunden:

Es gibt für fast jeden Control die Eigenschaft Tag.
In dieser Eigenschaft gebe ich dann für Textboxe, die auf "" gesetzt werden müssen, "leer" ein, und für die, die irgendwas enthalten müssen z. B. "voll". Und wenn beides zutrifft, dann "leer+voll".

Und dann mit einer For Each Schleife lese ich die Tags jeder Controls auf einem Form und werte die Tags mit Stringfunktionen aus. Und in der Code steht nur "SetTextEmpty myform", und ich muss keine Auflistungen machen, aber trotzdem kann ich individuell entscheiden, welches TextBox auf "" gesetzt werden muss.

Und so habe ich zwei Fliege mit einer Klappe geschlagen: weil dieses Sub kann ich auch dafür nutzen, um festzustellen, ob alle Pflichtfelder ausgefüllt sind, oder nicht.
 
Zuletzt bearbeitet:
Zurück