在Excel自定义菜单中查找特定菜单项

在Excel自定义菜单中查找特定菜单项,excel,vba,menuitem,Excel,Vba,Menuitem,在Excel 2010中,我创建了一个菜单 Dim NewMenu As CommandBarPopup Set NewMenu = CommandBars(1).Controls.Add(Type:=msoControlPopup, Before:=HelpMenu.Index, temporary:=True) NewMenu.Caption = "&MyMenu" 并在其中添加了一些项目 Dim MenuItem As CommandBarControl Set MenuItem

在Excel 2010中,我创建了一个菜单

Dim NewMenu As CommandBarPopup
Set NewMenu = CommandBars(1).Controls.Add(Type:=msoControlPopup, Before:=HelpMenu.Index, temporary:=True)
NewMenu.Caption = "&MyMenu"
并在其中添加了一些项目

Dim MenuItem As CommandBarControl
Set MenuItem = NewMenu.Controls.Add(Type:=msoControlButton)
With MenuItem
    .Caption = "&Item1..."
    .Tag = "Item1"
End With
稍后,如何使用VBA查找特定的菜单项,例如启用或禁用它

我试过下面的方法

Dim itm As CommandBarControl
For Each itm In Application.CommandBars(1).Controls("&MyMenu")
    If itm.Tag="Item1" Then ...
Next

但对象不支持此类型或方法,出现错误。

请尝试使用以下代码。这对我很有用:

Dim itm As CommandBarControl
For Each itm In Application.CommandBars(1).Controls("&MyMenu").Controls
   If itm.Tag = "Item1" Then
      'do something
   End If
Next

尝试使用以下代码。这对我很有用:

Dim itm As CommandBarControl
For Each itm In Application.CommandBars(1).Controls("&MyMenu").Controls
   If itm.Tag = "Item1" Then
      'do something
   End If
Next

无需循环,您可以直接寻址该项。比如说

Dim ctlItm As CommandBarControl

Set ctlItm = NewMenu.Controls("Item1...")

无需循环,您可以直接寻址该项。比如说

Dim ctlItm As CommandBarControl

Set ctlItm = NewMenu.Controls("Item1...")

我怎么会错过它?我怎么会错过它?