Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA UserForm Objekt Als Variable zugreifen
#1
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
.xlsm   Book1.xlsm (Größe: 17,06 KB / Downloads: 7)
Antworten Top
#2
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
Antworten Top
#3
Hab eine Excel angehängt :)
Antworten Top
#4
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
Antworten Top
#5
Danke schonmal. Und wie kann ich nun eine Eigenschaft dieser TextBox ändern? Also z.B. .visible= true
Antworten Top
#6
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
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
Antworten Top
#8
Hallo, 19

hier zwei weitere Möglichkeiten, wie du die "Controls" ansprechen kannst: 21

.xlsm   Book1.xlsm (Größe: 22,08 KB / Downloads: 4)
________
Servus
Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste