Word 2010 VBA复选框

Word 2010 VBA复选框,vba,checkbox,ms-word,word-2010,Vba,Checkbox,Ms Word,Word 2010,希望是一个简单的。 我有一份Word文档,里面乱放着复选框。是否有任何方法可以将这些复选框作为一个集合进行访问,我可以循环并检查/设置ID和Value等属性 作为参考,我已经尝试了ActiveDocument.ContentControls集合;它是空的。 我还尝试了ActiveDocument.Fields。这实际上包含与页面上相同数量的复选框,但我无法将其转换为复选框以访问所需的属性 最后一个问题是,是否可以将事件处理程序动态分配给单击 提前感谢您文档中嵌入的所有ActiveX字段的集合(假

希望是一个简单的。 我有一份Word文档,里面乱放着复选框。是否有任何方法可以将这些复选框作为一个集合进行访问,我可以循环并检查/设置ID和Value等属性

作为参考,我已经尝试了ActiveDocument.ContentControls集合;它是空的。 我还尝试了ActiveDocument.Fields。这实际上包含与页面上相同数量的复选框,但我无法将其转换为复选框以访问所需的属性

最后一个问题是,是否可以将事件处理程序动态分配给单击


提前感谢您

文档中嵌入的所有ActiveX字段的集合(假设其名称为
ThisDocument
)就是
ThisDocument.fields的集合。此集合的项是类
字段
的对象

要查询此集合中对象的值,可以使用以下内容:

ThisDocument.Fields.Item(1).OLEFormat.Object.Value
要向事件处理程序添加代码,只需右键单击ActiveX控件,然后从上下文菜单中选择“查看代码”。您将获得Click事件处理程序:

Private Sub CheckBox1_Click()
     ' empty if event handler not set, VBA code otherwise '
End Sub
要动态插入代码,需要直接操作代码模块,并逐行添加事件处理程序。这可能有点棘手,但基本上,您可以执行以下操作:

ThisDocument _
   .VBProject _
   .VBComponents(ThisDocument.CodeName) _
   .CodeModule _
   .InsertLines(<<Line>>, <<String>>)
此文档_
.VBProject_
.VBComponents(此文档.代码名)_
.代码模块_
.插入行(,)

其中,
是要插入的位置(编号),而
是要插入的文本。注意不要插入到现有的<代码>子< /代码>、<代码>函数> />代码或自定义类型定义(显然)。

您使用的是什么版本的单词?此外,复选框是“普通”复选框还是ActiveX对象?Word 2010。我不确定,你知道快速检查的方法吗?如果有帮助,它的类型是Microsoft Forms 2.0复选框右键单击对象,查看上下文菜单中是否有“Format Control…”条目。如果是,则为ActiveX。如果不是,则是一个普通复选框,或者是一个遗留复选框(顺便说一句,该文档有多旧?)。建议:把“版本”这个词放在你的帖子里,让每个人都能看到。我有这个选项,所以我猜这是一个ActiveX复选框。Will update Now是否可以为其动态设置onclick事件处理程序?有趣的是,正如您所发布的,我通过反复搜索和head desk找到了非常相似的代码。当然,您的代码信息量更大,更简洁。现在,我们来了解如何只插入一次动态代码。只是一个简单的问题,这是为复选框分配点击处理程序的唯一方法吗?@Ryuu否。正如我所说,还有手动方法:右键单击所有控件,然后键入/粘贴代码。这并不像通过编程方式添加它们那样有趣,但您肯定不会那么头疼。:-)很公平。我只是想绝对确定,没有什么类似于.NET等中的事件处理,即一个函数可以处理多个事件。谢谢你的帮助help@Ryuu当然,您可以有一个子
来处理来自多个对象的事件。问题是,您需要将
Sub
分配给对象,唯一的方法是在对象的默认处理程序中调用该
Sub
(您需要在答案中声明类似的
\u Click()
)。更糟糕的是,您不能将参数传递给click事件处理程序,因此您的常规
Sub
将忽略实际调用它的对象,这使得它不太有用。