0

我正在使用在 Internet 上找到的底部代码将命令添加到 Word 2013 右键菜单。现在我已经使用了它,我希望能更好地理解它,并且有人可以向我解释一些参数。我想更好地理解它,如果我想再次运行它以添加更多命令。微软官方帮助参考只会让我感到困惑。

如何Before:=30工作?起初我以为它只是从右键菜单顶部开始倒计时,但是当我这样做时,我的命令出现在错误的位置。我认为它必须计算一直没有显示的命令。

Tag:="Save".Tag = "Save"相同的,它们是什么。是什么.Caption?上面三个参数看起来很相似。

Sub EditRightClickMenu()
'
'
'
   Dim cb As CommandBar
    Dim ctl As CommandBarButton
    On Error GoTo bye

    CustomizationContext = NormalTemplate
    Set cb = CommandBars("Text")
    Set ctl = cb.FindControl(Tag:="Save")
    If ctl Is Nothing Then
        Set ctl = cb.Controls.Add(Type:=msoControlButton, _
            Before:=30, Temporary:=True)

        With ctl
            .Caption = "Save"
            .Tag = "Save"
            .FaceId = 3
            .BeginGroup = True
            .OnAction = "MySave"
        End With
    End If

bye:

End Sub
4

1 回答 1

0

Before:=30确实是您希望在其之前插入新控件的菜单上的命令。如果您On Error GoTo bye从代码中删除 line line 并在正常的 word install 上运行它,您将在尝试设置 line 时遇到错误:

Set ctl = cb.Controls.Add(Type:=msoControlButton, _
        Before:=30, Temporary:=True)

这是因为默认的文本右键菜单上没有 30 个控件。将其更改为 5,它将正常工作。

Tag:="Save"并且.Tag="Save"略有不同。Tag:=当指定方法的变量输入时使用该符号,在这种情况下,它Tag是函数的输入FindControl。如果FindControl在编辑器中选择时按键盘上的 Shift+F2,它将带您进入方法和所有变量的定义。该.Tag符号指的是一个对象属性,在这种情况下,Tag它被设置为"Save"如果再次运行宏就可以找到它。

最后.Caption只是创建后显示在菜单控件上的文本。

于 2013-07-25T07:04:28.490 回答