Excel-VBA einen Wert Zuweisen von UserForm-ComboBox-Komponente auf die Globale Variable

Ich habe eine userform mit einem basic combobox-und Befehl-Taste. Wenn der Benutzer sich zuvor auf den Befehl-Knopf, ich will das UserForm zu schließen, und den Wert der combobox gespeichert werden soll, in eine variable zugegriffen werden kann, indem eine Unterroutine enthalten in "DieseArbeitsmappe".

In der UserForm code:

Public employee_position As String    
Public Sub CommandButton1_Click()

    employee_position = Me.ComboBox1.Value
    Unload Me

End Sub

In der "DieseArbeitsmappe", Code

Private Sub GetUserFormValue()
    Call Userform_Initialize
    EmployeePosition.Show
    MsgBox employee_position
End Sub

Wenn "GetUserFormValue()" ausgeführt wird, wird die UserForm kommt, können Sie einen Wert in der combobox und drücken Sie die Befehl-Taste, aber wenn die MsgBox kommt, zeigt es "" (Nichts)

Was mache ich hier falsch?

Setzen Sie die Globale variable in der ThisWorkbook Modul, nicht in der form Modul.
Wenn ich bewegen Sie die Globale variable auf den ThisWorkboox-Modul, das Ergebnis ist das gleiche: employee_position = ""
Wie wäre es in einem normalen Modul? Ich bekomme intellisense für die variable, wenn ich das mache, aber wenn es nicht in ThisWorkbook.
Was Sie wirklich tun sollten, ist zu erklären, eine Instanz einer userform und die Rückkehr der Wahl, um die routine aufrufen, wie beschrieben in Professionelle Excel-Entwicklung. Dieser Beitrag auf meinem blog könnte für Sie von Interesse sein: yoursumbuddy.com/a-flexible-vba-chooser-form
Ich habe nur @DougGlancy 's link, und sehen, dass er im wesentlichen die gleiche Sache, die ich vorgeschlagen, in meiner Antwort: verstecken der form, Prozess-Variablen in der aufrufenden routine, entladen.

InformationsquelleAutor P4U1 | 2013-01-25

Schreibe einen Kommentar