Word VBA - 如果勾选了某个复选框,则扩展 header?
Word VBA - Expand a header if a certain checkbox is ticked?
VB 用于 Excel,但 VB 用于 Word。如果某个复选框被标记为 true,我不确定如何展开标题。这是我目前拥有的代码,我收到一个 运行 时间错误,指出 collection 的请求成员不存在,但我在 window 的属性中命名了 CheckBox控制。我使用的是 Microsoft Word 版本 1808(内部版本 10730.20262 Click-to-Run)。
Sub Macro1()
If ActiveDocument.FormFields("Licensing_1").CheckBox.Value = True Then
Do Until Selection.Find.Found = False
If Selection.Text Like "Licensing Discovery Questions" Then
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
Selection.Find.Execute
Else: Selection.Paragraphs(1).CollapsedState = True
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
Selection.Find.Execute
End If
Loop
End If
End Sub
与表单域不同,多个 Word 内容控件可以具有相同的名称(名称 - 实际术语是 Title
)。因此,无法将字符串用作索引值 - 它不能保证是唯一的。
因此,有必要使用方法SelectContentControlsByTitle
(或SelectContentControlsByTag
)获取内容控件object。方法 returns a Collection 的内容控件 - 所有这些都具有相同的标题或标签。 (注意:这些是case-sensitive!)。
如果代码适用于所有这些内容控件,则使用 For Each
循环和 collection。
如果代码只适用于一个内容控件(例如第一个),可以使用 ContentControls.Item
属性 指定。
假设文档中只有一个复选框指定为 "Licensing_1":
Sub CheckBox_CC()
Dim ccCheckBox As Word.ContentControl
Dim doc As Word.Document
Set doc = ActiveDocument
Set ccCheckBox = doc.SelectContentControlsByTitle("Licensing_1").Item(1)
If ccCheckBox.Checked Then
'Do things here
End If
End Sub
VB 用于 Excel,但 VB 用于 Word。如果某个复选框被标记为 true,我不确定如何展开标题。这是我目前拥有的代码,我收到一个 运行 时间错误,指出 collection 的请求成员不存在,但我在 window 的属性中命名了 CheckBox控制。我使用的是 Microsoft Word 版本 1808(内部版本 10730.20262 Click-to-Run)。
Sub Macro1()
If ActiveDocument.FormFields("Licensing_1").CheckBox.Value = True Then
Do Until Selection.Find.Found = False
If Selection.Text Like "Licensing Discovery Questions" Then
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
Selection.Find.Execute
Else: Selection.Paragraphs(1).CollapsedState = True
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
Selection.Find.Execute
End If
Loop
End If
End Sub
与表单域不同,多个 Word 内容控件可以具有相同的名称(名称 - 实际术语是 Title
)。因此,无法将字符串用作索引值 - 它不能保证是唯一的。
因此,有必要使用方法SelectContentControlsByTitle
(或SelectContentControlsByTag
)获取内容控件object。方法 returns a Collection 的内容控件 - 所有这些都具有相同的标题或标签。 (注意:这些是case-sensitive!)。
如果代码适用于所有这些内容控件,则使用 For Each
循环和 collection。
如果代码只适用于一个内容控件(例如第一个),可以使用 ContentControls.Item
属性 指定。
假设文档中只有一个复选框指定为 "Licensing_1":
Sub CheckBox_CC()
Dim ccCheckBox As Word.ContentControl
Dim doc As Word.Document
Set doc = ActiveDocument
Set ccCheckBox = doc.SelectContentControlsByTitle("Licensing_1").Item(1)
If ccCheckBox.Checked Then
'Do things here
End If
End Sub