如何用VBA向Word中添加CheckBox控件并修改属性
来源:网络收集 点击: 时间:2024-03-14新建Word,在开发工具栏里面点开录制宏,选择自己喜欢的操作方式,这里将宏指定到键盘,然后键入一组新快捷键。点击指定,然后手动添加一个CheckBox复选框。停止录制,打开Visual Basic编辑器,进入刚才录制宏的代码块。如下图

里面非常重要的一句话,第二句:Selection.InlineShapes.AddOLEControl ClassType:=Forms.CheckBox.1
这句就是向Word文档中添加CheckBox复选框的语句。第一句是选中当前文档的。
这里,我们可以直接调用ActiveDocument的InlineShapes方法,向当前文档中添加控件。
代码如下,
Set x = ActiveDocument.InlineShapes.AddOLEControl(Forms.CheckBox.1) ‘新建一个复选框并将此复选框赋值给x变量。

然后我们可以用复选框的.OLEFormat.Object方法来改变他的属性。
这里比如改变他的名称为您好,宽度为100.用with语句如下
Set x = ActiveDocument.InlineShapes.AddOLEControl(Forms.CheckBox.1)
With x.OLEFormat.Object
.Caption = 您好
.Width = 100
End With

这里我们用Do While······Loop语句来实现批量添加。
Dim x
Do While False
Set x = ActiveDocument.InlineShapes.AddOLEControl(Forms.CheckBox.1)
With x.OLEFormat.Object
.Caption = 您好
.Width = 100
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop

下一步,将要添加复选框的词组组成一个字符串,这里用“、”隔开。如:
头痛、偏头痛、心绞痛、坐骨神经痛、痛、其它痛
通过下面语句分别赋值给复选框的Caption属性,并将字符串的长度赋值给width属性。通过下面语句,语义见注释:
Sub 宏2()
宏2 宏
Dim str1, str2 As String
Dim len1, len2 As Integer
Dim x
str1 = 、头痛、偏头痛、心绞痛、坐骨神经痛、痛、其它痛
str1 = StrReverse(str1)
反转字符串,因为每次新建复选框都是新建在第一个
Do While Len(str1) 0
判断字符串是否取完。
len1 = InStr(str1, 、)
取出第一个“、”出现的位置。
str2 = Mid(StrReverse(Left(str1, len1)), 2)
取出字符串中最后一个“、”后面的字符串并反转。
If str2 = Then str2 = Mid(StrReverse(str1), 2)
如果“、”取完了,剩下的就是最后一组。
len2 = Len(str2) * 10 + 25
预定复选框的宽度,根据字符串长度
Set x = ActiveDocument.InlineShapes.AddOLEControl(Forms.CheckBox.1)
With x.OLEFormat.Object
.Caption = str2
.Width = len2
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
str1 = Right(str1, Len(str1) - len1)
去除已经加复选框的字符串
Loop
End Sub

以上完成后回到文档快捷键运行即可,如果出现问题,建议通过F8逐行运行调试。

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_353358.html