我在办公室的办公桌上有一些VBA代码,它们在Excel中运行得很好,但在家里就会崩溃。原来我所要做的就是改变
Set shtObj = ThisWorkbook.Sheets(1)至
Set shtObj = Excel.ThisWorkbook.Sheets(1)有人知道为什么吗?我们的组织刚刚迁移到SharePoint平台,我怀疑这会导致各种巫毒的蔓延,但我只是在猜测。
发布于 2017-01-26 06:48:19
如果您将其更改为ThisWorkbook**?** back ,它会起作用吗
我怀疑它会,原因是VBA重新编译了自己(第一次没有正确编译-因此有崩溃的倾向)。
当文件中嵌入的版本详细信息与正在使用的Office/VBA版本不同时,或者Office从32位更改为64位时,将进行重新编译。编辑该行就足以重新编译该行,因此在ThisWorkbook之前添加Excel.就足以使其重新编译。在ThisWorkbook之前删除Excel.应该会强制它再次重新编译。
唯一的另一种可能是,如果有一个名为ThisWorkbook的变量,但我预计你会得到错误91,“对象变量或未设置块变量”,或其他一些错误,但不会崩溃。
发布于 2017-01-26 05:46:25
VBA是一个全局作用域的Workbook对象,您可以使用它来引用包含您正在查看的代码的工作簿实例。
因此,从理论上讲,未限定的ThisWorkbook与 Excel.ThisWorkbook或Application.ThisWorkbook的对象完全相同。
证明:
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)。
我不确定你的文件有什么问题,但这两者之间应该没有任何区别。
发布于 2017-02-02 02:12:14
这似乎是我的特定用户/配置文件中的错误。其他人现在正在使用代码/工作簿,没有报告任何问题。耶!!?
https://stackoverflow.com/questions/41862027
复制相似问题