向我解释这个Word宏中的一些参数

时间:2013-07-25 06:48:50

标签: vba ms-word word-vba

我使用的是我在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

1 个答案:

答案 0 :(得分:0)

Before:=30确实是您希望插入新控件的菜单上的命令。如果您从代码中删除行On Error GoTo bye行并在正常的字词安装上运行,则会在尝试设置该行时出错:

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仅仅是菜单控件创建后显示的文本。