Me关键字的行为不一致

时间:2013-07-14 20:51:33

标签: vba word-vba

我注意到模板文件中VBA代码中Me关键字的行为会有所不同,具体取决于文档是否包含ActiveX控件。

  • 包含ActiveX控件的文档:Me引用从模板创建的新文件。
  • 没有ActiveX控件的文档:Me引用模板而不是新文件。

为了演示这种奇怪的行为,我制作了两个示例文件:

两个文件都是相同的,它们之间的唯一区别是一个有一个Button而另一个没有。两个文件的VBA代码如下:

Private Sub Document_New()
    Selection.TypeText "Me keyword is referencing """ & Me.Name & """."
End Sub

如果您从这些模板创建新文件,您会发现结果不同:

WithActiveX.dotm内容是

  

Me关键字引用“Document1”。 < - 由上面的代码生成的字符串

而WithoutActiveX.dotm内容为

  

Me关键字引用“WithoutActiveX.dotm”。 < - 由上面的代码生成的字符串

我做了几个测试,得出结论,不一致的来源是ActiveX控件的存在(没有与控件关联的代码:它只存在于文档中)。

这是设计还是只是一个错误?

编辑2017-06-13 :此处描述的错误似乎已部分修复,但仍可重现。现在,只有在使用其中一个模板(如空白文档)创建新文档之前,才会打开Word实例。

1 个答案:

答案 0 :(得分:1)

那是一个错误。

根据MSDN:

  

提供了一种引用执行代码的类的特定实例的方法。

对我来说,这意味着它应该始终是新文档。确保您不是偶然在模板中运行代码。

来源: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/me-keyword