如何使用当前工作表VBA中的代码触发在单独工作表中运行的代码

时间:2019-01-25 19:57:13

标签: excel vba

我在这里有这段代码,它周围的代码并不重要,它可以正常运行。但是,在突出显示的点上,我需要触发我指向的“ SCP Status Paynter”工作表中的代码,才能在该点以下的代码之前触发其运行。我不想只是放入另一个按钮或我只希望它触及代码中的那个点并在另一个工作表中运行代码。 Havent能够专门在Google上找到我需要的内容,因此对此不熟悉,因此我不确定该怎么做。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:4)

VBE的 Project Explorer 使得很难说出/猜测您打算调用什么特定程序(Rubberduck Code Explorer 向下钻取到过程级节点在这里会有所帮助!注意:我是这个开源项目的管理员之一,但无论如何,看来您需要调用build文档模块中的过程。

说您的程序如下:

Sheet1

然后从项目中的任何位置执行此操作:

Public Sub DoSomething()
    ' do stuff
End Sub

与您执行此操作没有什么不同

Sheet1.DoSomething

这正在调用位于标准库函数中的public / global-scope函数,其标准名称为:

MsgBox "hello, world"

现在,如果您的程序如下所示:

VBA.Interaction.MsgBox "hello, world"

然后您遇到一个问题:它是Private Sub Worksheet_Change() ' do stuff End Sub ,它是事件处理程序。可以使事件处理程序 Private并如上所述进行调用,但是更好的做法是将主体放入一个单独的过程中,如下所示:

Public

这样,您就不用理会事件处理程序了。工作表事件处理程序是由Excel而非用户代码调用的;这同样适用于Private Sub Worksheet_Change() DoSomething End Sub Public Sub DoSomething() ' do stuff End Sub 处理程序:它们应由CommandButton1_Click并由MSForms库而不是用户代码调用。养成在事件处理程序之外实现逻辑的习惯(并使其成为调用逻辑),这是一种早日习得的好习惯。