使用onAction和Parameters在word vba中运行时构建菜单

时间:2014-03-24 06:59:22

标签: vba ms-word ms-office

我正在运行时在VBA(word)中构建一个包含许多子和子子菜单的大菜单 我想让菜单的每个尾部(我们只能说每个菜单项)与sub链接,所以当点击标题xxx的菜单项时,xxx会显示在消息框中

在构建菜单时 我用了

myMenu.Caption ="xxx"
myMenu.onAction ="MySub"
myMenu.Parameters = myMenu.Caption

搜索如何使用.parameters  我发现我需要在MySub中提到菜单对象! (因为MySub没有参数)

所以这不会解决它:( 我想将标题传递给MySub,所以所有菜单都像我上面提到的那样工作, 像这样MySub(menuCaption as string)

但我发现我必须像这样使用它

MySub()
  Msgbox myMenu.Parameter
end sub

所以在MySub中,如果我需要提及myMenu那么它是如何动态的并且可以处理所有菜单项,

这是构建我的菜单的子

Sub BuildCommentsMenu()
 Dim men As CommandBarControl
 Dim i%
 Do
 'test line to be removed
 'If i > 299 Then Exit Do

    If Len(commentsObjs(i).comment) = 0 Then Exit Do
Set men = categoriesObj.getMenuUponName(commentsObjs(i).Type_).Controls.Add(msoControlButton, , , , True)
    With men
        .caption = Left(commentsObjs(i).comment, 200)
        If Len(commentsObjs(i).comment) > 200 Then .caption = .caption + "..."
        .Visible = True
        'uncomment next line when you put the functions
        .OnAction = "fnMen" & CStr(commentsObjs(i).ID)
    End With
Set commentsObjs(i).CommentMenu = men
    i = i + 1
 Loop
 End Sub

enter image description here 任何线索??

非常感谢你,

1 个答案:

答案 0 :(得分:1)

您必须像这样构建所有菜单

myMenu.Caption ="xxx" 'change this caption every time
myMenu.onAction ="MySub"
myMenu.Parameters = myMenu.Caption

然后,在你的子目录中,使用

Public Sub MySub()
    MsgBox CommandBars.ActionControl.Parameter
End Sub

这总是会给你点击菜单的标题。