当从下拉内容控件中进行选择时,我尝试插入具有多个内容控件的各种不同的表格。
我尝试了多种方法,但每次我按 Tab 键退出下一个内容控件的下拉内容控件时,我都会得到
运行时错误“4605”:此方法或属性不可用,因为当前选择部分覆盖了纯文本内容控件。
当我使用光标单击而不是单击内容控件时,不会出现此错误,然后代码会生成包含所有内容控件的表格。
我一直用代码来测试不同的想法。我计划在代码完成后保护此文档,以防止人们修改表单。
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
If ContentControl.Tag = "ReturnType" Then
Dim tbl As Table
Dim rng As Range
Select Case ContentControl.Range.Text
Case "Selection 1"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 3, 3)
tbl.cell(1, 2).Range.ContentControls.Add wdContentControlCheckBox
Case "Selection 2"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 2, 2)
Case "Selection 3"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 1, 1)
End Select
End If
End Sub
我尝试使用多个 If 语句、Select Case 语句并引用新的子语句来生成表。
只需将 Selection 重置到您想要的位置,然后再尝试添加 ContentControl,就可以了。
tbl.cell(1, 2).Range.Select
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
If ContentControl.Tag = "ReturnType" Then
Dim tbl As Table
Dim rng As Range
Select Case ContentControl.Range.Text
Case "Selection 1"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 3, 3)
tbl.cell(1, 2).Range.Select
tbl.cell(1, 2).Range.ContentControls.Add wdContentControlCheckBox
Case "Selection 2"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 2, 2)
Case "Selection 3"
Set rng = ActiveDocument.Content.Paragraphs(3).Range
Set tbl = rng.Tables.Add(rng, 1, 1)
End Select
End If
End Sub