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, 14:06
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 14: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, 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)
Registriert seit: 11.04.2014
Version(en): Office 365
14.12.2021, 14:13
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 14: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, 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?
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, 14:29
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 14:34 von Korain.)
(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?
Registriert seit: 30.01.2021
Version(en): Office 365
14.12.2021, 14:39
(Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2021, 14: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
|