Registriert seit: 09.12.2021
Version(en): 365
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
Registriert seit: 11.04.2014
Version(en): Office 365
14.12.2021, 15:06
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 15:08 von Klaus-Dieter.)
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.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 09.12.2021
Version(en): 365
(14.12.2021, 15: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)
Registriert seit: 11.04.2014
Version(en): Office 365
14.12.2021, 15:13
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 15:19 von Klaus-Dieter.)
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.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 09.12.2021
Version(en): 365
(14.12.2021, 15: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?
Registriert seit: 11.04.2014
Version(en): Office 365
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
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 09.12.2021
Version(en): 365
14.12.2021, 15:29
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 15:34 von Korain.)
(14.12.2021, 15: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?
Registriert seit: 30.01.2021
Version(en): Office 365
14.12.2021, 15:39
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 15:45 von Mitness.)
Hallo Korain, versuchs Mal so: Code: Private Sub all_tb() Dim tb As Object
For Each tb In UserForm2_de2.Controls If TypeName(tb) = "TextBox" Then tb.BackColor = RGB(255, 255, 255) Next tb
End Sub
Mit freundlichen Grüßen Mitness
Registriert seit: 11.04.2014
Version(en): Office 365
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
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 09.12.2021
Version(en): 365
Super Ansätze, habe ich jetzt übernommen.
Passt! :)
Vielen Dank euch!
Folgende(r) 1 Nutzer sagt Danke an Korain für diesen Beitrag:1 Nutzer sagt Danke an Korain für diesen Beitrag 28
• Mitness
|