我有一个带复选框的用户表单,如果未选中该复选框,则我希望删除并上移内容控件。
我的文档中有内容控件,如下所示:
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
答案 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
上面解决了