Hallo zusammen,
ich habe in einer UserFrom ca. 50 TextBoxen in verschiedenen Multiseiten.
Ich habe teilweise Abfragen für die User, die die Textboxen zb. rot färben.
Mittels eines Buttons sollen aber alle Hintergründe der TextBoxen bereinigt werden (wieder weiß gefärbt werden).
Es dürfen aber nur die TextBoxen sein und keine Schaltflächen.
Die TextBoxen heißen: TextBox1, TextBox2,..., TextBoxn
Name der UserForm: UserForm2_de2
Meine Idee (die nicht klappt):
Code:
For x = 1 To 50
UserForm2_de2.Controls("TextBox" & x).BackColor = RGB(255, 255, 255)
Next x
Hallo Korain,
die Farbzuweisungen bei UserForm-Objekten sind etwas anders. Versuche es mal so:
Code:
For x = 1 To 50
Controls("TextBox" & x).BackColor = &H80000005
Next x
Hinweis: da sich die Anweisung im Modul des UserForm befindet (befinden sollte), braucht darauf nicht referenziert werden.
(14.12.2021, 14:06)Klaus-Dieter schrieb: [ -> ]Hallo Korain,
die Farbzuweisungen bei UserForm-Objekten sind etwas anders. Versuche es mal so:
Code:
For x = 1 To 50
Controls("TextBox" & x).BackColor = &H80000005
Next x
Hinweis: da sich die Anweisung im Modul des UserForm befindet (befinden sollte), braucht darauf nicht referenziert werden.
Hallo Klaus-Dieter,
bekomme nach wie vor eine Fehlermeldung:
"Das angegebene Objekt konnte nicht gefunden werden"
Färbe die TexBoxen so ein (klappt auch wie gewünscht):
Code:
TextBox10.BackColor = RGB(230, 184, 183)
Hallo,
dann gibt es mindesten eine der Textboxen nicht.
Hallo,
Zitat:Färbe die TexBoxen so ein (klappt auch wie gewünscht):
Code:
Code:
TextBox10.BackColor = RGB(230, 184, 183)
OK, habe ich noch nie versucht, allerdings arbeite ich auch nicht mit RGB.
(14.12.2021, 14:13)Klaus-Dieter schrieb: [ -> ]Hallo,
dann gibt es mindesten eine der Textboxen nicht.
Hallo,
OK, habe ich noch nie versucht, allerdings arbeite ich auch nicht mit RGB.
Stimmt, habe die Stichprobe gemacht, sonst funktioniert es.
Gibt es eine Möglichkeit nicht vorhandene TextBoxen zu überspringen?
(14.12.2021, 14:23)Klaus-Dieter schrieb: [ -> ]Hallo Korain,
ja, versuche es mal so:
Code:
For x = 1 To 50
If x = 12 Then x = 13
Controls("TextBox" & x).BackColor = &H80000005
Next x
Hallo Klaus-Dieter,
damit würde ich ja nur ausschließen, dass nur eine TextBox nicht vorhanden ist richtig?
Funktioniert leider nicht, sprich es kann auch mal vorkommen, dass 2 oder mehr nicht existieren.
Gibt es auch eine Möglichkeit grundsätzlich abzufragen, ob die TextBox existiert.
Sprich:
Code:
For x = 1 To 50
If 'Controls("TextBox" & x) = Exist Then
Controls("TextBox" & x).BackColor = &H80000005
End If
Next x
LG Korain
@Klaus-Dieter
Habe es jetzt wie folgt gelöst:
Code:
For x = 1 To 50
Controls("TextBox" & x).BackColor = RGB(255, 255, 255)
On Error Resume Next
Next x
Denke mit dem "On Error Resume Next" ist nicht die sauberste Lösung aber passt denke ich. Habe ich Stichprobenartig erfolgreich getestet.
Oder würdest du sagen, dass die Lösung nicht gut ist?
Hallo Korain,
bei meinen UserForms kommt das nicht (mehr) vor. So etwas löse ich meistens über ein Array mit den Nummern der vorhandenen Objekte. Das würde etwas so aussehen:
Code:
Private Sub UserForm_Click()
Dim varNrArr As Variant
Dim intAnz As Integer
varNrArr = Array(1, 2, 4, 6, 8, 10, 12, 14) ' hier stehen die Nummern der Objekte die es wirklich gibt
For intAnz = 0 To 7
Controls("TextBox" & varNrArr(intAnz)).BackColor = &H80000005
Next intAnz
End Sub
Super Ansätze, habe ich jetzt übernommen.
Passt! :)
Vielen Dank euch!