我正在尝试调用我在模块中的工作表内定义的Sub。
我在我的模块中使用的代码(在子内部)
CallByName Worksheets("Sheet_name"), "Sub_name", vbMethod
但是excel不会执行Sub。模块和工作表位于同一工作簿中
答案 0 :(得分:7)
您需要将功能设置为Public
,如下所示
Sheet 1中:
Public Sub test()
MsgBox "Got here!"
End Sub
模块:
Sub callTest()
With Sheet1
Call .test
End With
End Sub
答案 1 :(得分:2)
如果它在同一个项目和Public
范围内 - 只需使用子名称。
如果它在另一个工作簿中,请使用Application.Run()
<强> 1 强>
Sub Foo()
Bar '// Runs Sub Bar()
End Sub
Sub Bar()
MsgBox "I got called!"
End Sub
2。
Sub Foo()
Application.Run "MyOtherWorkbook.xlsm!Bar"
End Sub
答案 2 :(得分:2)
从任何模块或工作表(包含代码),
如果您在“Button1_click()
”中有一个名为Sheet12
的子组,并且您想从其他模块或工作表中调用它。
只需输入
call Sheets("Sheet12").Button1_click 'Without parenthesis
答案 3 :(得分:1)
对我来说,我必须将Sheet Sub程序从Private更改为Public才能使Call for work。
Call Worksheets("Sheet_name").Sub_name
就我而言:
Call Worksheets("Sheet 20").CommandButton1_Click