我想为未知数量的复选框启用通用代码来更改行的格式样式。我有多行带有一个复选框,我需要检查以将该行设置为正常,并取消选中以将格式设置为标题2。
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
If ContentControl.Checked = True Then
Selection.Style = ActiveDocument.Styles("Normal")
ElseIf contextcontrol.Checked = False Then
Selection.Style = ActiveDocument.Styles("Heading 2")
End If
End Sub
选中一个框会将光标设置在该行上,所以我希望这个策略能够正常工作。我从来没有在Word中使用过vba,所以我觉得我在做错代码时做错了什么?
答案 0 :(得分:0)
您正在使用ContentControlOnEnter宏,该宏仅在您选择内容控件时告诉您内容控件的状态,而不是您可能已将其更改为的内容。对于后者,您需要一个ContentControlOnExit宏 - 并在选中/取消选中复选框后退出内容控件。此外,您应该检查内容控件的类型,以便在内容控件不是复选框时它不会抛出并出错。例如:
Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
With CCtrl
If .Type = wdContentControlCheckBox Then
If .Checked = True Then
.Range.Paragraphs.First.Style = wdStyleNormal
Else
.Range.Paragraphs.First.Style = wdStyleHeading2
End If
End If
End With
End Sub
答案 1 :(得分:0)
如果,并且实际上仍然需要使用输入以使其工作,则会错过结束。代码触发的问题是因为我把它放在模块>宏而不是在文档中。正确的代码:
Private Sub Document_ContentControlOnEnter(ByVal CCtrl As ContentControl)
With CCtrl
If .Type = wdContentControlCheckBox Then
If .Checked = True Then
.Range.Paragraphs.First.Style = wdStyleNormal
Else
.Range.Paragraphs.First.Style = wdStyleHeading2
End If
End If
End With
End Sub