[英]Call subroutine of a userForm within another userForm with Application.Run
我嘗試創建一個名為“UtilTextBox”的用戶窗體,它將接收來自用戶的文本輸入。 結果將被發送回創建“UtilTextBox”的用戶表單。 “UtilTextBox”應該可用於任何未來的用戶窗體。
當用戶單擊提交按鈕時,我嘗試將傳出用戶窗體的名稱傳遞給 TextBox 用戶窗體並使用 Application.Run 調用它。
第一個用戶窗體中的子程序稱為“TextEditor”
Private Sub Between1Edit_Click()
UtilTextBox.Show
UtilTextBox.callback = "TextEditor.GetResult"
End Sub
“UtilTextBox”的代碼
Public callback As String
Private Sub Send_Click()
Application.Run callback, TextBox.text
End Sub
第一個將接收文本輸入的用戶窗體的子程序
Public Sub GetResult(result As String)
MsgBox result
End Sub
順便說一下,兩個用戶窗體都在同一個工作簿中。
我預計用戶發送的文本會被 MsgBox 傳遞並打印出來。
相反,我收到了運行時錯誤“1004”:無法運行宏。
是否可以使用 Application.Run 從 UserForm 調用公共子程序?
你應該改變線條
Private Sub Between1Edit_Click()
UtilTextBox.callback = "TextEditor.GetResult"
UtilTextBox.Show
End Sub
是的,唯一的方法是 CallByName:
來自文本編輯器的代碼
Private Sub Between1Edit_Click()
UtilTextBox.callback = "GetResult"
Set UtilTextBox.frm = Me
UtilTextBox.Show
End Sub
Public Sub GetResult(result As String)
MsgBox result
End Sub
來自 UtilTextBox 的代碼
Public callback As String
Public frm As Object
Private Sub Send_Click()
CallByName Me.frm, Me.callback, VbMethod, Me.TextBox.Text
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.