从加载项调用Subs

时间:2013-11-24 17:36:33

标签: excel vba excel-vba

我有一个Excel工作簿,其中包含Workbook_Open中的一些基本开放代码和xSheet中的一些代码,即

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Run s00Config_Worksheet_SelectionChange(Target)

End Sub

其中sub s00Config_Worksheet_SelectionChange存在于加载的Excel AddIn中(暂时可见)。

但是当我在第一张表中执行程序时,我得到的是Sub或Function not defined。

在AddIn中,sub已被定义为

Public Sub s00Config_Worksheet_SelectionChange(ByVal Target As Range)

问题是:

  1. 我是否以正确的方式思考,
  2. 如何让我的Excel工作表在Excel AddIn(XLAm)中执行sub,其中有很多

2 个答案:

答案 0 :(得分:1)

Run由Excel提供,VBA将其视为普通子例程。因此,当您说Run s00Config_Worksheet_SelectionChange(Target)时,VBA会尝试立即评估函数,然后将其作为第一个参数传递给Run。为了防止VBA像这样干扰,Run要求您将目标子例程名称作为字符串传递给它,然后继续执行目标参数列表的其余部分:

Run "s00Config_Worksheet_SelectionChange", Target

如果您想从您调用的任何函数中获取值,则应用相同的语法:

v = Run("s00Config_Worksheet_SelectionChange", Target)

答案 1 :(得分:0)

  1. 确保在VBA项目中引用插件(工具 - 参考 - 浏览)。
  2. 删除Runparentheses

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        s00Config_Worksheet_SelectionChange Target
    End Sub