首页 > 解决方案 > 获取在输入时调用宏的表单字段的名称

问题描述

我有一些表单域对象,它们在输入时调用宏。

如何获取调用宏的表单域的名称?类似于 application.caller 但用于 Word 的东西。

标签: vbams-word

解决方案


假设您的意思是文档本身中的“旧表单字段”,如果您已将表单字段属性中的“输入时运行宏”设置为合适的子,则可以使用如下代码:

If Selection.FormFields.Count = 1 Then
  ' This deals with dropdown etc. but not FORMTEXT fields
  Debug.Print Selection.FormFields(1).Name
ElseIf Selection.FormFields.Count = 0 And Selection.Bookmarks.Count > 0 Then
  Debug.Print Selection.Bookmarks(Selection.Bookmarks.Count).Name
End If

FormField 实际上不必有名称,在这种情况下它不会有书签,因此您可能需要允许这样做。

如果您指的是其他类型的字段,例如文档中的 VBA 用户表单字段、内容控件或 ActiveX 字段,请修改您的问题以使其清楚。


推荐阅读