首页 > 解决方案 > 如何在不使用代号作为限定符的情况下访问另一个(引用的)VBA 项目的公共变量

问题描述

我尝试访问其他 Excel 文件(被引用)中的公共变量,而不对 excel 文件/VBA 项目进行硬编码,并且需要帮助来实现这一点。我需要资格,因为可以打开具有相似变量的多个文件。

假设您有一个Test(Test.xlsb)定义了公共变量的 VBA 项目myVar

在另一个 VBA 项目(它有一个引用Test)中,我可以访问这个变量,例如

debug.print Test.myVar

但是,如果不使用 qualifier ,我就无法达到同样的效果Test。我尝试使用workBook,VBProjectReference作为限定符,但这些选项都不起作用。我也无法将代号寻址的对象分配给变量。该代码set myObj = Test会引发编译器错误,但set mySheet = Test.Sheet1确实有效。

任何帮助表示赞赏。

标签: excelvba

解决方案


看来您需要在模块之外定义公共变量,以便放置在任何函数之外的工作表对象中。

此处提出了一个类似的问题Using Excel VBA variable for multiple workbooks

因此,如果您将Public myVar as String(假设类型为字符串)放在外部工作簿中ThisWorkbook,并将您的对象设置为您一直在做的工作簿,那么您可以实现此目的:

 Dim wb As Workbook
 Set wb = Workbooks("Test.xlsb")
 MsgBox wb.myVar

推荐阅读