VBA:多个用户表单引用相同的代码

我有一个VBA代码,通过用户窗体接受用户input(标准),创build符合所述标准的项目列表,并通过消息框随机地输出其中一个列表项目。

我想要创build第二个用户窗体,将在上面的代码完成后打开,并让用户窗体显示随机输出。

我有几个关于如何完成的问题。

  1. 我想第二个用户窗体包含一个标签,其标题将反映随机输出。
  2. 我希望第二个用户窗体允许用户重新执行原始代码(即改变随机结果)

任何人都有这方面的经验?

我会用第二种forms的一个Property过程来获得随机值。

作为一个新的空白工作簿的例子:插入一个新的模块并粘贴在下面的代码。 这个代码代表你输出一个随机结果的代码。

Public Function RandomNumber() As Double RandomNumber = Rnd(10) End Function 

创build一个新的用户窗体(UserForm2),添加一个命令button(CommandButton1)和一个标签(Label1)。 将下面的代码添加到此表单。 我已经把四个程序放在那里。 MyProp设置ThePassedNumber的值, UpdateLabel1更新标签中显示的值, UserForm_Initialize在窗体加载时执行, CommandButton1_Click在您点击button时执行。

 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)并添加一个命令button(CommandButton1)并将此代码放在窗体中。
它将创build一个用户窗体的新实例,传递一个随机值,然后显示窗体。

 Private Sub CommandButton1_Click() Dim frm2 As UserForm2 Set frm2 = New UserForm2 frm2.MyProp = RandomNumber frm2.Show End Sub 

现在你只需要重写RandomNumber函数来返回你的列表项而不是数字。

我想你只是想使用无限循环,用户在取消时打破。 像这样的东西:

 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