Übergeben der Variablen von Form an Module in VBA
Habe ich die folgende Schaltfläche in einem Formular aus:
Private Sub CommandButton1_Click()
Dim pass As String
pass = UserForm1.TextBox1
Unload UserForm1
End Sub
Dann habe ich ein Modul namens "Module1":
Public Sub Login()
...
UserForm1.Show
driver.findElementByName("PASSWORD").SendKeys pass
...
End Sub
Die Idee ist, was Passwort, das der Benutzer eingibt, in das Eingabe-Feld wird der Variablen zugewiesen pass
. Was ich habe Probleme dabei ist jedoch vorbei pass
aus UserForm1 in "Module1" in der Login-sub.
Mir wäre der Gedanke, etwas hinzuzufügen, wie Module1.Login (pass)
zu meiner form, bevor ich zu entladen, es würde funktionieren, aber das scheint nicht zu passieren etwas. Jede Hilfe wäre sehr geschätzt werden. Danke.
InformationsquelleAutor der Frage JimmyK | 2013-11-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht deklarieren Sie die Variablen in der userform. Deklarieren Sie es als
Public
im Modul.In der Userform
Im Modul
Möchten Sie vielleicht auch eine zusätzliche prüfen Sie vor dem aufrufen des
driver.find...
Linie?Dadurch wird sichergestellt, dass ein leerer string wird nicht übergeben.
InformationsquelleAutor der Antwort Siddharth Rout
Siddarth s Antwort ist nett, aber setzt auf Global-scoped Variablen. Gibt es einen besseren, mehr OOP-freundliche Weise.
Einer UserForm ist eine Klasse Modul, wie jedes andere, der einzige Unterschied ist, dass es eine versteckte
VB_PredeclaredId
- Attribut aufTrue
das macht VB erstellen Sie eine global-scope-Objekt-Variablen, benannt nach der Klasse - das ist, wie Sie schreibenUserForm1.Show
ohne erstellen einer neuen Instanz der Klasse.Schritt Weg von diesem, und behandeln Sie Ihr Formular als ein Objekt und nicht - expose
Property Get
Mitglieder und abstrahieren der Formular-Steuerelemente - der aufrufende code kümmert sich nicht um Kontrollen sowieso:Nun der aufrufende code kann dies tun (vorausgesetzt, dass die UserForm benannt wurde
LoginPrompt
):Wo
DoSomething
würde einige Verfahren, die erfordert, dass die beiden string-Parameter:InformationsquelleAutor der Antwort Mathieu Guindon