好的,我知道这是一个持续存在的问题,而且我似乎到处都在寻找答案。抱歉,如果我不知道此处的答案,那么,如果您知道一个答案,请提出建议!
我使用“ CustomUI编辑器”在Excel中创建了一个自定义功能区。我的宏当前仅通过工作表上的按钮直接运行,而不是从UI上运行。我读到这是由于链接到原始文件造成的。创建了一个新的新工作簿,创建了新的宏(未导入),创建了自定义UI按钮,并将这些宏链接到了新按钮上,但这些按钮仍然给我以下错误:该宏无法运行并且可能不可用。在这里丢失了吗?我还读到有可能在打开工作簿时创建一个宏来更新链接。有没有人成功过?我想在功能区上有按钮并将其从工作表中删除!感谢您可以提供的任何帮助!
答案 0 :(得分:0)
您可以使用以下子项添加自定义菜单项。只需将.OnAction值替换为您希望控件运行的宏的名称即可。
Sub AddCustomMenu()
Dim cbMainMenuBar As CommandBar
Dim iHelpMenu As Integer
Dim cbcCutomMenu As CommandBarControl
'Delete the menu item if it already exists. Use On Error Resume Next in case it doesn't exist.
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("&My Tools").Delete
On Error GoTo 0
Set cbMainMenuBar = Application.CommandBars("Worksheet Menu Bar") 'Set a CommandBar variable to Worksheet menu bar
iHelpMenu = cbMainMenuBar.Controls("Help").Index 'Return the Index number of the Help menu. We can then use this to place a custom menu before.
Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup, Before:=iHelpMenu) 'Add a Control to the "Worksheet Menu Bar" before Help.
cbcCutomMenu.Caption = "&My Tools" 'Give the control a caption
'Working with our new Control, add a sub control and give it a Caption and tell it which macro to run (OnAction).
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Run Macro 1"
.OnAction = "Macro1"
End With
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Run Macro 2"
.OnAction = "Macro2"
End With
End Sub
如果您希望每次打开工作簿时都添加自定义菜单,请转到ThisWorkbook模块并添加以下子项:
Private Sub Workbook_Open()
AddCustomMenu
End Sub