Word VBA“标签未定义”如果书签存在命令

Posted

技术标签:

【中文标题】Word VBA“标签未定义”如果书签存在命令【英文标题】:Word VBA "Label Not Defined" If Bookmark exists command 【发布时间】:2010-12-01 23:33:33 【问题描述】:

我对 VBA 非常陌生,并且正在学习。这是我的情况和问题:

1) 我创建了一个工作用户表单,其中包含链接到书签的文本和组合框 2)问题是,如果某些书签不存在,它就不起作用(并且项目将需要这个:表单将需要在并非所有书签都存在的文档上运行) 3)如果书签不存在,我希望表格停止给我错误消息,只需填写该特定文件中存在的那些 4) 这是代码:

Private Sub cmdOK_Click()
    Application.ScreenUpdating = False
    With ActiveDocument
          If .Bookmarks.Exists("cboYourName") Then
        .Range.Text = cboYourName.Value
        Else: GoTo 28
    End If
         If .Bookmarks.Exists("cboYourPhone") Then
         .Range.Text = cboYourPhone.Value
         Else: GoTo 32
    End If
        If .Bookmarks.Exists("cboYourFax") Then
        .Range.Text = cboYourFax.Value
        Else: GoTo 36
    End If
         If .Bookmarks.Exists("cboYourEmail") Then
         .Range.Text = cboYourEmail.Value
        Else: GoTo 40
    End If
         If .Bookmarks.Exists("txtContractName") Then
         .Range.Text = txtContractName.Value
         Else: GoTo 44
    End If
          If .Bookmarks.Exists("txtContractNumber") Then
          .Range.Text = txtContractNumber.Value
          Else: End
    End If
    End With
    Application.ScreenUpdating = True
    Unload Me
End Sub

4) 我怎样才能让它工作?????????

【问题讨论】:

【参考方案1】:

我认为你很接近。首先,避免 Goto 语句。在您的代码中,很难说出您的意思。我认为错误来自 Goto 语句。它的参数是一个标签,而不是一个行号。其次,避免使用 End。最好有一个结束例程。也就是说,该代码适用于任意数量的 Exists 语句。

Private Sub cmdOK_Click()
    Application.ScreenUpdating = False
    With ActiveDocument
        If .Bookmarks.Exists("cboYourName") Then
            .Range.Text = "cboYourName text."
        Else
            Debug.Print "Bookmark exists."
        End If

        If .Bookmarks.Exists("cboYourPhone") Then
           .Range.Text = "cboYourPhone text"
        Else
            Debug.Print "Bookmark does not exists."
        End If
    End With

    Application.ScreenUpdating = True
    Unload Me
End Sub

但是,请注意,每个找到的书签都会完全替换文档的内容,包括随后找到的书签。这就是你的意思吗?

【讨论】:

以上是关于Word VBA“标签未定义”如果书签存在命令的主要内容,如果未能解决你的问题,请参考以下文章

使用VBA将Excel指定单元格数据字符串或者图表对象插入到Word模板指定书签处

通过VBA将EXCEL的数据传给WORD

Word VBA 的主要对象体系结构是怎样的?编辑中常用对象都有哪些?

如何用VBA宏程序将excel中的内容批量复制到word文档中去

VBA Excel 2016 中未定义子或函数

Word VBA命令确定找到的字符是否在行尾