存在命令按钮时的奇怪行为。 Word VBA

时间:2019-05-03 04:39:16

标签: vba ms-word

创建一个启用宏的文档,该文档首先具有工作的宏,但是随后在插入按钮时停止工作。以下说明。

代码:

Sub UpdateOptions()
  Dim bProtected As Boolean
  'Unprotect the file
  If ActiveDocument.ProtectionType <> wdNoProtection Then
    bProtected = True
    ActiveDocument.Unprotect Password:=""
  End If

  Select Case ActiveDocument.FormFields("Bookmark0").Result
    Case "Bookmark1"
        ActiveDocument.Bookmarks("Bookmark1").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark2"
        ActiveDocument.Bookmarks("Bookmark2").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark3"
        ActiveDocument.Bookmarks("Bookmark3").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
  End Select
  If bProtected = True Then
    ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, _
        NoReset:=True, _
        Password:=""
  End If
End Sub

设置Word文档的步骤:

  • 输入文档:Bookmark0
  • 插入旧版下拉列表字段

    • 列表条目:Bookmark1,Bookmark2,Bookmark3
    • 名称:Bookmark0
    • 在退出时运行宏:UpdateOptions(上面的代码)
  • 在下拉菜单中,键入:Enter,Enter(插入两个段落)

  • 类型:书签1
  • 插入第二个旧式下拉列表字段

    • 列表:1、2、3。
    • 名称:Bookmark1
  • 在下拉菜单中,键入:Enter,Enter(插入两个段落)

  • 类型:书签2
  • 插入第三个旧版下拉列表字段

    • 列表:1、2、3。
    • 名称:Bookmark2
  • 在下拉菜单中,键入:Enter,Enter(插入两个段落)

  • 类型:书签3
  • 插入第四个旧版下拉列表字段
    • 列表:1、2、3。
    • 名称:Bookmark3

此时您的文档应如下所示:

  

书签0 [下拉列表]

     

书签1 [下拉列表]

     

书签2 [下拉列表]

     

书签3 [下拉列表]

  • 将文档另存为启用宏的文档(docm)。
  • 保护文档以表格形式填写

测试:

  • 仅从可用的列出选项(Bookmark1,Bookmark2,Bookmark3)中更改第一个drowpdown选项
  • 每次更改选择时,都会直接转到相应的“书签下拉列表”字段。
  • 应能按预期工作。

按钮冲突

  • 解锁文档
  • 在Bookmark3下面的文档末尾插入一个按钮[Button]

您的文档应与上面相同,但现在有一个按钮:

  

书签0 [下拉列表]

     

书签1 [下拉列表]

     

书签2 [下拉列表]

     

书签3 [下拉列表]

     

[按钮]

  • 保护文档以表格形式填写

测试按钮冲突:

  • 从(书签1,书签2,书签3)更改Bookmak0选择
  • 每次更改选择时,都不会直接进入相应的“书签下拉列表”字段。
  • 每次更改选择时,都会将您定向到预期的相应“书签下拉列表”字段之后的字段。
  • 使用按钮时,宏无法按预期工作。
  • 取消保护文档,删除按钮,重新保护文档,它将再次正常工作。

我也在以下链接上发布了此问题(可在此处下载文件:: http://www.vbaexpress.com/forum/showthread.php?65092-Odd-behavior-when-Command-Buttons-are-present

http://www.msofficeforums.com/word-vba/42422-odd-behavior-when-command-buttons-present.html

eileenslounge.com/viewtopic.php?f=26&t=32411

1 个答案:

答案 0 :(得分:0)

找不到奇怪行为的原因。

作为一种解决方法,我只是在想要的书签之前选择了一个书签,如下面的代码所示。

使用命令按钮,一切正常。

Sub UpdateOptions()
Dim bProtected As Boolean
'Unprotect the file
If ActiveDocument.ProtectionType <> wdNoProtection Then
    bProtected = True
    ActiveDocument.Unprotect Password:=""
End If

Select Case ActiveDocument.FormFields("Bookmark0").Result
    Case "Bookmark1"
        ActiveDocument.Bookmarks("Bookmark0").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark2"
        ActiveDocument.Bookmarks("Bookmark1").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark3"
        ActiveDocument.Bookmarks("Bookmark2").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
End Select
If bProtected = True Then
    ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, _
        NoReset:=True, _
        Password:=""
End If
End Sub

感谢所有接受此主题的人。

Raudel