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模板指定书签处
Word VBA 的主要对象体系结构是怎样的?编辑中常用对象都有哪些?