编程添加复选框时出错



我在这里做错了什么?我需要用复选框替换各种字符,但要有一个错误:

Sub ReplaceCheckboxes()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Do
  With Selection.Find
    .Text = ChrW(13)
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = True
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
  End With
  Selection.Range.ContentControls.Add (wdContentControlCheckBox) ' error on this line
  If Selection.Find.Execute = False Then Exit Do
Loop
Selection.HomeKey Unit:=wdStory
End Sub

我在Selection.Range.ContentControls.Add (wdContentControlCheckBox)行上获得"对象不支持此操作"。我也尝试了

Set objCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox)

ActiveDocument.ContentControls.Add wdContentControlCheckBox, Selection.Range

我想我误解了查找方法的工作原理。

我不认为实际行是问题所在。如果浏览代码,您将看到复选框正在插入。更根本的问题是您创建了一个无限的循环。DO循环没有出口条件,因此您的代码可能只是在运行直到崩溃。

****编辑要注意正确的解决方案:****

解决方案是删除WDContentControlCheckbox周围的括号。在VBA中,仅当结果返回到变量时,括号才会围绕一个函数的参数。

示例(函数调用将结果分配给变量,而不分别为变量分配结果):

结果= somefunction(arg1,arg2)

somefunction arg1,arg2

最新更新