Registriert seit: 26.07.2016
Version(en): 2013, 365
30.04.2021, 15:50
(Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2021, 16:04 von moe_zzarella .)
Hallo Zusammen,
in VBA kann man ja Objekte über z.B. UserForm1.Textbox aufrufen.
Ich habe jedoch richtig viele Objekte und möchte einen Loop darüber laufen lasen. Dabei gebe ich jedoch die Bezeichnungen der Objekte als String ein.
Also z.b.
x = textbox
UserForm1. & x
So etwas in der Art funktioniert jedoch nicht.
Habt ihr einen Tipp wie das lösen kann?
LG
Moe
Angehängte Dateien
Book1.xlsm (Größe: 17,06 KB / Downloads: 7)
Registriert seit: 11.04.2014
Version(en): Office 365
30.04.2021, 15:53
(Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2021, 15:59 von Klaus-Dieter .)
Hallo,
ich denke da hast du nicht alles richtig verstanden. Lade bitte eine Beispieldatei hoch, damit man sich das ansehen kann.
Hallo,
um das noch etwas zu verdeutlichen:
eine Textbox gibt, wie der Name schon sagt, Texte zurück. Dann heißt sie nicht stumpf TextBox, sondern zum Beispiel TextBox1. Daraus folgert: x = CInt(TextBox1)
Was du mit dem Bezug auf UserForm1 planst, hat sich für mich nicht erschlossen. Wenn dein Makro im Modul des UserForm steht, brauchst du darauf nicht verweisen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 26.07.2016
Version(en): 2013, 365
Hab eine Excel angehängt :)
Registriert seit: 18.01.2021
Version(en): 365
30.04.2021, 16:15
(Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2021, 16:16 von DeltaX .)
So könntest Du z.B. über TextBoxen loopen
Code:
Private Sub CommandButton1_Click()
Dim ctrl As MSForms.Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
Debug.Print "Textbox: " & ctrl.Name
End If
Next ctrl
End Sub
Registriert seit: 26.07.2016
Version(en): 2013, 365
Danke schonmal. Und wie kann ich nun eine Eigenschaft dieser TextBox ändern? Also z.B. .visible= true
Registriert seit: 29.09.2015
Version(en): 2030,5
Wenn du Textboxen systematische Namen gibst, z.B. T_01, T_02, T_03:
Code:
Private Sub UserForm_Click()
For j=1 to 3
Megsbox Me("T_" & Tormat(j,"00").Text
Next
End Sub
Registriert seit: 12.06.2020
Version(en): 2021
Code:
Sub test()
Dim oCtrl As Object
Dim lastrow As Long
Dim rng As Range
Dim result
lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1
Set rng = Sheet1.Range("a1").Resize(lastrow)
For Each oCtrl In UserForm1.Controls
result = Application.Match("UserForm1." & oCtrl.Name, rng, 0)
If IsNumeric(result) Then
oCtrl = "hi"
End If
Next
End Sub
sofern deine Controlnamenliste in der Tabelle irgend einen speziellen Grund hatte ,dann macht der obige Code folgendes
schleife über alle Controls der UserForm und Suche ob der Name in der Liste steht. wenn ja wird "Hi" an die Textboxen übergeben.
ps: oCtrl.visible = true oder Textbox1.visible = true
Registriert seit: 30.08.2014
Version(en): Office 365 - Beta 32 Bit
Hallo,
hier
zwei weitere Möglichkeiten, wie du die "
Controls " ansprechen kannst:
Book1.xlsm (Größe: 22,08 KB / Downloads: 4)
________
Servus
Case