Aufrufen einer userform und gibt einen Wert zurück
Ich habe einen vba-code das ist Auto_öffnen. Es hat einige Prüfungen fordert dann eine userform, fragt nach Benutzername und Passwort. Ich nannte diese userform mit userform_name.show
.
Mein Problem ist wie kann ich wieder ein Boolean
zu meinem Auto_Open
sub aus userform-code.
Ich verlinkt der code, der überprüft, ob die Anmeldeinformationen korrekt sind, um die "Login" - button auf die form. dies ist der code, der produziert die Boolean. Ich brauche, um Sie wieder in die Auto_Open.
Private Sub loginbutton()
Dim bool As Boolean
Dim lrup
Dim r As Long
Dim pass As String
loginbox.Hide
'are fields empty
Do While True
If unBox.Text = "" Or pwBox.Text = "" Then
MsgBox ("You must enter a Username and Password")
Else
Exit Do
End If
loginbox.Show
Exit Sub
Loop
'find pw reated to username (if existant)
lrup = UserPass.Range("A1").Offset(UserPass.Rows.Count - 1, 0).End(xlUp).Row
If unBox = "b0541476" And pwBox = "theone" Then
bool = True
Else
MsgBox ("Invalid username or password. Please try again.")
loginbox.Show
Exit Sub
End If
For r = 2 To lrup
If unBox = Cells(r, 1) Then
pass = Cells(r, 2).Value
Exit For
End If
Next
If pass = "" Then
MsgBox ("Invalid username or password. Please try again.")
loginbox.Show
Exit Sub
Else
bool = True
End If
End Sub
"dies ist der code, der produziert die boolian" - Wo ist es?
sorry, ich habe es. wie kann ich pass "bool" zurück zu Auto_Open-wenn der code über?
sorry, ich habe es. wie kann ich pass "bool" zurück zu Auto_Open-wenn der code über?
InformationsquelleAutor user2385809 | 2013-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen
Dim bool As Boolean
aus dem userform-code-Bereich und deklarieren Sie Sie in das Modul wie unten gezeigtDies ist, wie Sie Ihren Code in das Modul Aussehen würde
Das ist insgesamt eine andere Frage 🙂 Das ist im Grunde beantwortet, wie die Deklaration einer booleschen Variablen und verwenden Sie es in der userform und dann pass es an
Auto_Open
Ja, Sie sind richtig. Deine Methode funktioniert nur finden, in Bezug auf die Frage zu geben.
Ziemlich peinlich, dass ich nicht glaube, dass. Danke!
InformationsquelleAutor Siddharth Rout
Wie wäre es mit einer Funktion anstelle eines sub?
Nun an den aufrufenden code, den Sie testen können, für wahr/falsch
Wenn ich das richtig verstehe, es würde funktionieren auf die gleiche Weise so lange, wie Sie rufen die Funktion in der richtigen Lage. So oder so, der login-code wird ausgeführt, und Ende, ich bin nur zu prüfen, wenn es fertig ist läuft es true zurück, oder false, basierend auf dem, was war drinnen laufen. @Siddharth Lösung funktioniert auch, aber offen lässt, ein größeres Sicherheits-Risiko.
InformationsquelleAutor Portland Runner
Die Sie verwalten können, dies zu tun, ohne den Einsatz von public-Variablen.
Scheint es einen Unterschied zwischen ein - /ausblenden und laden/entladen.
Wenn Sie ein Formular ausblenden, während es immer noch geladen, es wird nicht geräumt, so können Sie die Referenz-Zustand der Steuerelemente auf dem Formular.
Zum Beispiel war ich mit einen Datum-picker (genannt
DTPicker1
) auf eine form, meinen code im Modul sieht wie folgt aus:Auf dem Formular können Sie einfach
Me.Hide
insteaded vonUnload Me
- und diese Arbeit sollteInformationsquelleAutor Noodle_Soup