我试图将一个用户窗体中的值返回到另一个宏中。我一直在寻找答案,即使它似乎对其他人也有用,但我却无法工作。
这是我想返回值intMonth
的一段代码的示例:
sub comparison()
UserForm1.Show
end sub
然后我有用户表单代码:
Private Sub initialize()
OptionButton1 = False
End Sub
Private Sub OptionButton1_Click()
intMonth = 1
Me.Hide
End Sub
如何将intMonth
的{{1}}值恢复为原始的1
函数?不管我做什么,我似乎都无法获得这个价值。
答案 0 :(得分:3)
这是一个最小的示例,但应该有所帮助。
在用户窗体中:
Option Explicit
Option Base 0
Public intMonth As Long ' <-- the variable that will hold your output
Private Sub initialize()
OptionButton1 = False
intMonth = 0
End Sub
Private Sub CommandButton1_Click() ' OK button
Me.Hide
End Sub
Private Sub OptionButton1_Click()
intMonth = 1 '<-- set the value corresponding to the selected radio button
End Sub
Private Sub OptionButton2_Click()
intMonth = 2
End Sub
在模块或ThisWorkbook
中:
Option Explicit
Option Base 0
Sub comparison()
UserForm1.Show
MsgBox CStr(UserForm1.intMonth) ' <-- retrieve the value
End Sub
答案 1 :(得分:0)
实现所需功能的另一种有用方法是将代码包装在用户窗体的公共函数中。
在用户窗体中:
Option Explicit
Option Base 0
Private intMonth As Long
Public Function Choose_Option()
OptionButton1 = False
intMonth = 0
Me.show()
Choose_Option = intMonth
End sub
Private Sub CommandButton1_Click() ' OK button
Me.Hide
End Sub
Private Sub OptionButton1_Click()
intMonth = 1
End Sub
Private Sub OptionButton2_Click()
intMonth = 2
End Sub
然后在模块中,就这么简单:
Option Explicit
Option Base 0
Sub comparison()
MsgBox Userform1.Choose_Option()
End Sub
这样,该函数负责显示用户表单,提示用户并返回值。
如果调试此函数,您将看到在调用Me.Show()之后,该函数仅在隐藏用户窗体(在“确定”按钮中完成)后才停止并继续。