簡體   English   中英

使用 Application.Run 在另一個用戶表單中調用用戶表單的子例程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM