VBA:多个用户表单引用相同代码
VBA: Multiple Userforms Referencing Same Code
我有一个 VBA 代码,它通过用户表单获取用户输入(标准),创建满足所述标准的项目列表,并通过消息框随机输出列表项目之一。
我想创建第二个用户窗体,它将在上述代码完成后打开,并让用户窗体显示随机输出。
关于如何做到这一点,我有几个问题。
- 我希望第二个用户表单包含一个标签,其标题将反映随机输出。
- 我希望第二个用户表单允许用户re-execute原始代码(即更改随机结果)
有人有这方面的经验吗?
我想您只是想使用用户在取消时中断的无限循环。
像这样:
Sub MySub()
Dim myRandOutput As Single
Do
myRandOutput = myRand()
Loop While MsgBox(myRandOutput, vbRetryCancel) = vbRetry
End Sub
Function myRand() As Single
myRand = Rnd()
End Function
我会在第二种形式中使用 属性 过程来获取随机值。
以新的空白工作簿为例:
插入一个新模块并粘贴下面的代码。此代码代表您输出随机结果的代码。
Public Function RandomNumber() As Double
RandomNumber = Rnd(10)
End Function
创建一个新的用户窗体(UserForm2),添加一个命令按钮(CommandButton1) 和一个标签(Label1)。将以下代码添加到此表单。我在那里放了四个程序。 MyProp设置ThePassedNumber的值,UpdateLabel1更新标签显示的值,UserForm_Initialize 在表单加载时执行,CommandButton1_Click 在您单击按钮时执行。
Private ThePassedNumber As Double
Property Let MyProp(TheNumber As Double)
ThePassedNumber = TheNumber
UpdateLabel1
End Property
Private Sub CommandButton1_Click()
ThePassedNumber = RandomNumber
UpdateLabel1
End Sub
Private Sub UserForm_Initialize()
UpdateLabel1
End Sub
Private Sub UpdateLabel1()
Me.Label1.Caption = ThePassedNumber
End Sub
添加第二个窗体 (UserForm1) 并添加命令按钮 (CommandButton1) 并将此代码放在窗体中。
它将创建一个用户窗体的新实例,将一个随机值传递给它,然后显示该窗体。
Private Sub CommandButton1_Click()
Dim frm2 As UserForm2
Set frm2 = New UserForm2
frm2.MyProp = RandomNumber
frm2.Show
End Sub
现在您只需将 RandomNumber 函数重写为 return 您的列表项而不是数字。
我有一个 VBA 代码,它通过用户表单获取用户输入(标准),创建满足所述标准的项目列表,并通过消息框随机输出列表项目之一。
我想创建第二个用户窗体,它将在上述代码完成后打开,并让用户窗体显示随机输出。
关于如何做到这一点,我有几个问题。
- 我希望第二个用户表单包含一个标签,其标题将反映随机输出。
- 我希望第二个用户表单允许用户re-execute原始代码(即更改随机结果)
有人有这方面的经验吗?
我想您只是想使用用户在取消时中断的无限循环。 像这样:
Sub MySub()
Dim myRandOutput As Single
Do
myRandOutput = myRand()
Loop While MsgBox(myRandOutput, vbRetryCancel) = vbRetry
End Sub
Function myRand() As Single
myRand = Rnd()
End Function
我会在第二种形式中使用 属性 过程来获取随机值。
以新的空白工作簿为例: 插入一个新模块并粘贴下面的代码。此代码代表您输出随机结果的代码。
Public Function RandomNumber() As Double
RandomNumber = Rnd(10)
End Function
创建一个新的用户窗体(UserForm2),添加一个命令按钮(CommandButton1) 和一个标签(Label1)。将以下代码添加到此表单。我在那里放了四个程序。 MyProp设置ThePassedNumber的值,UpdateLabel1更新标签显示的值,UserForm_Initialize 在表单加载时执行,CommandButton1_Click 在您单击按钮时执行。
Private ThePassedNumber As Double
Property Let MyProp(TheNumber As Double)
ThePassedNumber = TheNumber
UpdateLabel1
End Property
Private Sub CommandButton1_Click()
ThePassedNumber = RandomNumber
UpdateLabel1
End Sub
Private Sub UserForm_Initialize()
UpdateLabel1
End Sub
Private Sub UpdateLabel1()
Me.Label1.Caption = ThePassedNumber
End Sub
添加第二个窗体 (UserForm1) 并添加命令按钮 (CommandButton1) 并将此代码放在窗体中。
它将创建一个用户窗体的新实例,将一个随机值传递给它,然后显示该窗体。
Private Sub CommandButton1_Click()
Dim frm2 As UserForm2
Set frm2 = New UserForm2
frm2.MyProp = RandomNumber
frm2.Show
End Sub
现在您只需将 RandomNumber 函数重写为 return 您的列表项而不是数字。