vba - 使用 onAction 和参数在运行时在 word vba 中构建菜单

标签 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 有什么线索吗??

非常感谢,

最佳答案

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

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

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

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

这总是为您提供所单击的菜单的标题。

关于vba - 使用 onAction 和参数在运行时在 word vba 中构建菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602874/

相关文章:

javascript - 如何使用 Word 的 Javascript API 清除 Word 撤消堆栈

vba - Excel VBA 脚本在 URL 列表中查找 404 错误?

c# - 使用 OpenXML SDK 将 docx 文件中的文本替换为换行符(换行符)

c# - 使用 OpenXml 调用 AddAlternativeFormatImportPart 后文档损坏

vba - 在 Word 中自动将 .doc 转换为 .htm

sql - 查询 Excel 2010 时诊断 OLEDB 异常

ms-access - 打开任何桌面VBA Access的文件路径,我需要设置路径以便它可以在任何桌面上打开

excel - 删除行(向后工作),但使用范围变量?

excel - 使用工作表名称动态填充列

excel - 如何从 Add in 将 OOXML 数据插入 excel 和 Powerpoint