我尝试创建一个名为“ UtilTextBox”的用户窗体,该窗体将接收来自用户的文本输入。结果将发送回创建“ UtilTextBox”的用户窗体。 “ UtilTextBox”应可用于将来的任何用户窗体。
我试图将传出的用户窗体的名称传递给TextBox用户窗体,并在用户单击提交按钮时使用Application.Run对其进行调用。
第一个UserForm中名为“ 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
第一个UserForm的子例程,它将接收文本输入
Public Sub GetResult(result As String)
MsgBox result
End Sub
两个UserForm都在同一工作簿中。
我期望用户发送的文本会被MsgBox传递并打印出来。
相反,我收到运行时错误“ 1004”:无法运行宏。
答案 0 :(得分:0)
您应该更改行
Private Sub Between1Edit_Click()
UtilTextBox.callback = "TextEditor.GetResult"
UtilTextBox.Show
End Sub
答案 1 :(得分:0)
是的,唯一的方法是CallByName:
TextEditor中的代码
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