3

我打开了我的 excel 表,然后打开了 VBA 编辑器。在即时窗口中,我执行以下命令。

?Application.EnableEvents = True

它返回 False 。但是,如果我打开新的 excel 工作表并键入它返回 True 的命令。任何理由

4

1 回答 1

1

我不相信命令正在做你认为的那样。

请记住,VBA 将 = 运算符重载为赋值和比较,并使用上下文来决定哪个是哪个。

这 ?运算符使 VBA 相信您在问“这两个是否相同”,而不是“将其设置为那个”。

一些示例代码:

Application.EnableEvents = False
? Application.EnableEvents
False
? Application.EnableEvents = True
False
? Application.EnableEvents = False
True
? Application.EnableEvents
True
Application.EnableEvents = True
? Application.EnableEvents
True
? Application.EnableEvents = True
True
? Application.EnableEvents = False
False
? Application.Enableevents
True

请注意,没有 ? 命令更改值-所有命令都仅报告比较是否为真,而无需调整变量。只有一个平面作业才能做到这一点。

于 2015-07-20T17:24:15.783 回答