excel - 使用 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 调用公共子程序?
解决方案
是的,唯一的方法是 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
推荐阅读
- r - R Windows:安装包“rvest”(和其他几个包)时出错
- javascript - 如何处理nodejs应用程序中的“ReferenceError:require is not defined”?
- dask - 如何有效地加入多个 dask 数据帧
- sql - Oracle APEX - 将隐藏的 SQL 查询下载到 CSV
- android - 具有网格布局延伸的回收站视图中的图像
- swift - 将 macos UI 冻结 30 秒——冥想
- apache-spark - Spark 结构化流式打印每批次每执行器的偏移量
- macos - 无法在 macos 上安装 web3
- r - R 版本 3.6.1(2019-07-05)(通过自制软件安装)在使用 terrain() 函数时因 seg 错误而崩溃
- reactjs - 将firebase连接到React应用程序时如何修复“元素类型无效”