无法使用VBA编辑Excel菜单

时间:2017-01-24 16:44:03

标签: excel vba excel-vba

我试图在Excel' s(2010)功能区中创建自己的菜单。

我写了下面的Sub来创建一个' test'菜单,但我找不到任何证据表明菜单是在Controls集合中列出的,而是创建的。

我觉得我已经完成了所有事情,特别是因为我查了一大堆代码示例(example,这对我来说也不适用于其他人)。

我想我的问题是双重的,下面的代码是否会在您的 Excel中生成一个新菜单,如果是这样,我们知道为什么会在我的计算机上失败?

Sub CreateInterface()
  Dim Controls As CommandBarControls
  Dim CmdBar As CommandBarControl
  Dim NewMenu As CommandBarControl

  Set Controls = Application.CommandBars("Worksheet Menu Bar").Controls

  Set NewMenu = Controls.Add(Type:=msoControlPopup, Temporary:=True, before:=Controls.Count)
  NewMenu.Caption = "&Test"
  NewMenu.Visible = True
  For Each CmdBar In Controls
      Debug.Print CmdBar.Caption & "|" & CmdBar.Tag
  Next
End Sub

编辑:

感谢D.O.我可以看到代码正常工作它只是不在功能区中创建一个新菜单(如默认菜单(Home,Insert,Page Layout等))。

据我所知,这应该创建一个新菜单,而不是其中一个菜单中的项目,我该如何实际创建一个新菜单?

1 个答案:

答案 0 :(得分:1)

据我所知,旧的(2007年之前)CommandBars和Controls方式已经过时,它只会向"加载项"添加按钮。功能区标签。这是为了向后兼容旧的Office解决方案,因此它们仍然可以(在某种程度上)在2007+ Office应用程序下使用。

前进的方向(如果您打算使用Office 2007及更高版本)是修改功能区本身。它是一个全新的范例,实时自定义以完全不同的方式完成,但是如果你掌握它(它并不那么困难)它是非常有用的。我建议谷歌搜索一些功能区教程,并使用"自定义UI编辑器"用于将功能区代码添加到Office文件的工具。 Ron de Bruin的网站始终是获取更多信息的绝佳资源。