Word VBA“Label Not Defined”如果Bookmark exists命令

时间:2010-12-01 23:33:34

标签: vba ms-word exists bookmarks

我对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 个答案:

答案 0 :(得分:0)

我觉得你很亲密。首先,避免使用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

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