删除contentcontrol上面的行,运行时5941错误 - 请求的集合成员不存在

时间:2017-11-29 11:19:19

标签: vba word-vba

我有一个带复选框的用户表单,如果未选中该复选框,则我希望删除并上移内容控件。

我的文档中有内容控件,如下所示:

Header 1
Body 1

Header 2 
Body 2

Header 3
Body 3

每个标题和正文都链接到1个复选框,如果未选中复选框,则标题3和正文3都应删除并向上移动

我有这个代码,但是收到一个错误,说remeber不存在,但已经通过使用相同的代码选择而不是删除来检查100%。

    If cc.Tag = "DER2" Then
        If DERcb.Value = False Then
            With ActiveDocument.ContentControls(46)
                ActiveDocument.Range(.Range.Start - 1, .Range.End + 2).Select
                Selection.Delete
            End With
        End If
    End If

2 个答案:

答案 0 :(得分:0)

我打算猜测这段代码是在某种循环中......

所以可能会发生的是你正在寻找第46个ContentControl然后删除它。好吧......假设您的文档中有50个ContentControl。

这是ContentControls的Collection。现在删除文档中的第46个ContentControl - >现在文档中有49个ContentControl。

您可以多次删除ContentControl(46)3次(每次都是不同的),然后您将只有45个ContentControls。

现在,尝试删除ContentControl(46)...它不存在,只剩下45个。 VBA通过抛出错误>告诉你这个Requested Member of the Collection does not exist表示您要求ContentControl(46),但它不存在)。

如果是这样,有两种方法前进......

With ActiveDocument.ContentControls(ActiveDocument.ContentControls.Count)

OR

For i = ActiveDocument.ContentControls.Count to 1 Step -1
...
    With ActiveDocument.ContentControls(i)

答案 1 :(得分:0)

     If cc.Tag = "DI" Then
    If DIcb.Value = False Then
    With ActiveDocument.SelectContentControlsByTag("DI").Item(1)
    ActiveDocument.Range(.Range.Start - 2, .Range.End + 2).Select
    Selection.Delete
    End With
    End If
    End If

上面解决了