VBA从模块中调用Sheet中的SUB

时间:2015-11-20 16:37:53

标签: vba excel-vba excel

我正在尝试调用我在模块中的工作表内定义的Sub。

我在我的模块中使用的代码(在子内部)

CallByName Worksheets("Sheet_name"), "Sub_name", vbMethod

但是excel不会执行Sub。模块和工作表位于同一工作簿中

4 个答案:

答案 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