[英]VBA: Multiple Userforms Referencing Same Code
我有一個VBA代碼,該代碼通過用戶表單獲取用戶輸入(條件),創建滿足上述條件的項目列表,並通過消息框隨機輸出列表項之一。
我想創建第二個用戶窗體,在上述代碼完成后將打開它,並讓該用戶窗體顯示隨機輸出。
我對如何做到這一點有一些疑問。
有人對此有經驗嗎?
我將使用第二種形式的Property過程來獲取隨機值。
在新的空白工作簿中作為示例:插入一個新模塊並粘貼下面的代碼。 此代碼代表您的代碼,它輸出隨機結果。
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函數即可返回列表項而不是數字。
我想您只想使用一個無限循環,該循環在用戶被取消時會中斷。 像這樣:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.