vba - Excel VBA - 将用户窗体组合框的值分配给全局变量

标签 vba variables global userform

我有一个带有基本组合框和命令按钮的用户表单。当用户点击命令按钮时,我希望用户窗体关闭,并将组合框的值保存在一个变量中,该变量可以由“ThisWorkbook”中包含的子例程访问。

在用户窗体代码中:

Public employee_position As String    
Public Sub CommandButton1_Click()

    employee_position = Me.ComboBox1.Value
    Unload Me

End Sub

在“ThisWorkbook”代码中

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

当“GetUserFormValue()”运行时,用户窗体出现,您可以在组合框中选择一个值并按命令按钮,但是当MsgBox出现时,它显示“”(无)

我在这里做错了什么?

最佳答案

当您Unload Me时,我认为您会丢失与该模块关联的所有信息(包括全局变量)。但如果您使用 Me.Hide 而不是 Me.Unload,那么您可以在例程返回后访问表单的值。所以试试这个:

-- 用户表单代码包括:

Public Sub CommandButton1_Click()
    Me.Hide
End Sub

--主要模块包括:

Private Sub GetUserFormValue()
    Call Userform_Initialize
    EmployeePosition.Show
    MsgBox EmployeePosition.ComboBox1.Value
    Unload EmployeePosition
End Sub

我认为这应该有效。

关于vba - Excel VBA - 将用户窗体组合框的值分配给全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530146/

相关文章:

Python递归函数问题

excel - 每个循环的 VBA Excel

excel - 在其中输入值后,如何将光标保持在同一单元格中?

javascript - 问 : how can I add a javascript variable to yql query

javascript - 将数组列表存储在变量中

Python:为什么只在赋值而不是读取时才需要全局?

python - 将变量 "by name"添加到本地命名空间

vba - 如何在VBA中设置动画重复直到幻灯片结束

vba - 将 .xls 转换为 .xlsx 的宏使 Excel 崩溃

variables - 计划和设置!