我对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)我如何让它发挥作用??????????
答案 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
但是,请注意,每个找到的书签都会完全替换文档的内容,包括随后找到的书签。这是你的意思吗?