首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel.ThisWorkbook和ThisWorkbook之间的区别是什么?

Excel.ThisWorkbook和ThisWorkbook之间的区别是什么?
EN

Stack Overflow用户
提问于 2017-01-26 05:31:37
回答 3查看 480关注 0票数 3

我在办公室的办公桌上有一些VBA代码,它们在Excel中运行得很好,但在家里就会崩溃。原来我所要做的就是改变

代码语言:javascript
复制
Set shtObj = ThisWorkbook.Sheets(1)

代码语言:javascript
复制
Set shtObj = Excel.ThisWorkbook.Sheets(1)

有人知道为什么吗?我们的组织刚刚迁移到SharePoint平台,我怀疑这会导致各种巫毒的蔓延,但我只是在猜测。

EN

回答 3

Stack Overflow用户

发布于 2017-01-26 06:48:19

如果您将其更改为ThisWorkbook**?** back ,它会起作用吗

我怀疑它会,原因是VBA重新编译了自己(第一次没有正确编译-因此有崩溃的倾向)。

当文件中嵌入的版本详细信息与正在使用的Office/VBA版本不同时,或者Office从32位更改为64位时,将进行重新编译。编辑该行就足以重新编译该行,因此在ThisWorkbook之前添加Excel.就足以使其重新编译。在ThisWorkbook之前删除Excel.应该会强制它再次重新编译。

唯一的另一种可能是,如果有一个名为ThisWorkbook的变量,但我预计你会得到错误91,“对象变量或未设置块变量”,或其他一些错误,但不会崩溃。

票数 5
EN

Stack Overflow用户

发布于 2017-01-26 05:46:25

VBA是一个全局作用域的Workbook对象,您可以使用它来引用包含您正在查看的代码的工作簿实例。

因此,从理论上讲,未限定的ThisWorkbookExcel.ThisWorkbookApplication.ThisWorkbook的对象完全相同。

证明:

代码语言:javascript
复制
Sub Test()
    Debug.Print ObjPtr(ThisWorkbook), _
                ObjPtr(Excel.ThisWorkbook), _
                ObjPtr(Application.ThisWorkbook)
End Sub

输出相同指针地址的3倍。

Excel.ThisWorkbook是隐藏的Excel._Global模块的成员(Property Get),Application.ThisWorkbookExcel.Application类的成员(Property Get)。

我不确定你的文件有什么问题,但这两者之间应该没有任何区别。

票数 2
EN

Stack Overflow用户

发布于 2017-02-02 02:12:14

这似乎是我的特定用户/配置文件中的错误。其他人现在正在使用代码/工作簿,没有报告任何问题。耶!!?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41862027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档