我正在运行时在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
任何线索??
非常感谢你,
答案 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
这总是会给你点击菜单的标题。