VBA有一个子运行另一个子

时间:2013-01-28 23:12:26

标签: excel vba excel-vba excel-2003

如何运行存储在另一个工作表模块中的sub

worksheet1

sub endDay()
    'something here
end sub

worksheet2

sub reCalc()
    'something here
end sub

我希望recalc能够独立运行但是 我希望能够按下“endDay”按钮,让它做它的事情,然后在结束时预先形成“recalc”而不是按一个然后再转到sheet2按下另一个。

有人可以给我一个样本,这样我就可以知道从哪里开始了吗?

4 个答案:

答案 0 :(得分:10)

查看工作表的代码名称 - 您可以在Visual Basic编辑器的树视图中看到它们。通常它们被命名为Sheet1Sheet2等(独立于实际工作表名称,括号中显示)。在您的代码中使用此名称而不是Worksheets("Sheet1"),您还将获得一个自动填充列表 - 与您的子代码一起使用!

因此,这将完成工作:

Sheet1.reCalc

答案 1 :(得分:6)

sheets("worksheet2").reCalc

可能就是你的目标

答案 2 :(得分:1)

如果Sub在Module1中,

public interface InterfaceName { void function1(); void function2(); } public abstract class BaseInterfaceName implements InterfaceName { public void function1() { } public void function2() { } } public class MyClass { public void myMethod() { myMethodWithInterface(new BaseInterfaceName() { @Override public void function2() { System.out.println("function2"); } }) } public void myMethodWithInterface(InterfaceName intf) { intf.function1(); intf.function2(); } } 也可以正常工作。可能没有必要使用'Module1'。尽管如此。

答案 3 :(得分:1)

我知道它是2年后,但今天我一直在寻找同样的事情。至于工作表中的子元素可能是私有的,这是一个很好的解决方案:

   Sub maina()
           Run "tbl_Input.btn_main_Click"
   End Sub

tbl_Input是工作表的VBA名称,而不是标题。