Word VBA判断指定Title内容控件不存在以避免代码报错的方法
VBA 内容控件赋值防报错解决方案
SelectContentControlsByTitle 方法返回的是对应标题的内容控件集合对象,可直接通过它自带的 Count 属性获取指定名称的控件总数量,判断数量符合要求后再执行赋值逻辑即可避免报错。
写法1:按索引单独赋值
如果你需要给不同索引位置的控件赋不同值,可按如下逻辑编写:
Dim tag1Controls As ContentControls ' 一次性获取所有标题为Tag1的控件集合,避免重复调用方法 Set tag1Controls = ActiveDocument.SelectContentControlsByTitle("Tag1") ' 只有数量满足要求时才执行对应赋值 If tag1Controls.Count >= 1 Then tag1Controls.Item(1).Range.Text = "第一个控件的赋值" End If If tag1Controls.Count >= 2 Then tag1Controls.Item(2).Range.Text = "第二个控件的赋值" End If
写法2:批量赋值
如果所有标题为Tag1的控件都要填充相同内容,直接遍历集合更简单,无需提前判断数量,集合为空时会自动跳过循环:
Dim tag1Controls As ContentControls Dim ctrl As ContentControl Set tag1Controls = ActiveDocument.SelectContentControlsByTitle("Tag1") For Each ctrl In tag1Controls ctrl.Range.Text = "统一填充的内容" Next
以上两种写法都可以完美兼容控件被用户删除的场景,不会抛出找不到对象的运行时错误。
内容的提问来源于stack exchange,提问作者85l00k85
相关产品推荐
相关产品推荐

