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
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
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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
Unload Me
ich denke, Sie verlieren alle Informationen, die im Zusammenhang mit der Modul (einschließlich des globalen Variablen). Aber wenn Sie Mich.Verstecken Sie lieber als Mich.Entladen, dann können Sie den Zugriff auf den Wert der form nach die routine kehrt zurück. Also versuchen Sie dies:-- userform-code enthält:
-- main-Modul beinhaltet:
Ich denke, dass sollte funktionieren.
InformationsquelleAutor Floris
Ich hatte das gleiche problem, und dies ist, wie ich es behoben:
Wenn der Haupt-code in ein Arbeitsblatt, und die variable wird als public deklariert, Arbeitsblatt (z.B. in Microsoft Excel Objekte - > Tabelle1 (Tabelle1)), das Ergebnis von "Unload Me" können nicht übergeben werden, aus einer UserForm in das Arbeitsblatt code.
Also um mein problem zu lösen, habe ich ein neues Modul eingefügt, und erklärte meinen public-variable gibt. Ich hatte noch nicht einmal meinen code aus dem Arbeitsblatt-Modul... nur die Deklaration von public variable.
Ich hoffe das funktioniert auch für Sie!
Andrew
InformationsquelleAutor AndyUpNorth