Excel.ThisWorkbook和ThisWorkbook之间的区别?
我有一些VBA代码,在我办公桌上的Excel中运行良好,但在家里却是崩溃的。 结果我所要做的就是改变
Set shtObj = ThisWorkbook.Sheets(1)
至
Set shtObj = Excel.ThisWorkbook.Sheets(1)
任何人知道为什么 我们的组织刚刚搬到了一个SharePoint平台,我怀疑这个平台正在造成所有巫术的蔓延,但我只是猜测。
如果您将其更改回 ThisWorkbook
是否有效?
我怀疑它会的,原因将是因为VBA重新编译自己(并没有第一次正确编译 – 因此崩溃的倾向)。
当embedded在文件中的版本信息与正在使用的Office / VBA版本不同,或者从32位到64位Office有所不同时,就会发生重新编译。 编辑行就足以重新编译行,所以添加Excel.
之前ThisWorkbook
足以使其重新编译。 删除Excel.
在ThisWorkbook
应该强制它重新编译之前。
唯一可能的是,如果有一个名为ThisWorkbook
的variables,但是我希望你得到错误91,“对象variables或块variables未设置”,或者其他错误,但不是崩溃。
ThisWorkbook
是一个全局范围的Workbook
对象,您可以使用它来引用包含您正在查看的VBA代码的工作簿实例。
所以理论上讲 ,一个不合格的ThisWorkbook
与Excel.ThisWorkbook
或Application.ThisWorkbook
完全一样。
certificate:
Sub Test() Debug.Print ObjPtr(ThisWorkbook), _ ObjPtr(Excel.ThisWorkbook), _ ObjPtr(Application.ThisWorkbook) End Sub
输出相同指针地址的3倍。
Excel.ThisWorkbook
是隐藏的Excel._Global
模块的成员( Property Get
),而Application.ThisWorkbook
是Excel.Application
类的成员( Property Get
)。
不知道你的文件是怎么回事,但两者之间没有任何区别。
这似乎是我的特定用户/configuration文件中的一个错误。 其他人正在使用代码/工作簿,没有麻烦的报告。 好极了!!?