2015-11-13 74 views
0

我看到用戶名Rory發佈了一些代碼,並且希望對其進行編輯,以便我可以從功能區中的加載項運行我的宏。之後我粘貼他們所有的ThisWorkbook模塊中確實添加功能區按鈕那裏,但每次我點擊它時,我得到:功能區中的Excel 2007加載項不起作用

宏可能無法使用此工作簿或所有宏可能會被禁用」

我敢肯定,我對從Excel選項啓用所有宏選項下面是代碼,所有在「的ThisWorkbook」:

Private Const Button As String = "SomeName" 

Sub Auto_Open() 
    Dim CmdBar As CommandBar 
    Dim CmdBarMenu As CommandBarControl 
    Dim CmdBarMenuItem As CommandBarControl 

    Set CmdBar = Application.CommandBars("Worksheet Menu Bar") 
    Set CmdBarMenu = CmdBar.Controls("Tools") ' Index 6 

On Error Resume Next 
    Application.DisplayAlerts = False 
    CmdBarMenu.Controls(Button).Delete 
    Application.DisplayAlerts = True 
On Error GoTo 0 

Set CmdBarMenuItem = CmdBarMenu.Controls.Add(Type:=msoControlButton) 
With CmdBarMenuItem 
    .Caption = Button 
    .OnAction = "Hello" 
End With 

End Sub 

Sub Auto_Close() 
Dim CmdBar As CommandBar 
Dim CmdBarMenu As CommandBarControl 

Set CmdBar = Application.CommandBars("Worksheet Menu Bar") 
Set CmdBarMenu = CmdBar.Controls("Tools") ' Index 6 

On Error Resume Next 
    Application.DisplayAlerts = False 
    CmdBarMenu.Controls(Button).Delete 
    Application.DisplayAlerts = True 
On Error GoTo 0 

End Sub 

Sub Hello() 
MsgBox ("Hello") 
End Sub 

回答

0

所以這裏的代碼,傳給你的錯誤」。 onAction'如下所示:

With CmdBarMenuItem 
    .Caption = Button 
    .OnAction = "Hello" 
End With 

這裏的想法是你需要重新編程一個宏的「你好」。現在它正在尋找一個名爲「Hello」的子程序,並且找不到它。如果你把所有的代碼都放在'ThisWorkbook'中,我建議在這裏指出這一點,並使其更加強大。下面是一個例子,如果你希望按鈕調用一個名爲您在的ThisWorkbook創建「MyClick_Event」常規:

With CmdBarMenuItem 
    .Caption = Button 
    .OnAction = "ThisWorkbook.MyClick_Event" 
End With 

您還可以創建其他VBA紙如呼叫:

With CmdBarMenuItem 
    .Caption = Button 
    .OnAction = "Sheet1.MyClick_Event" 
End With 
+0

它的工作原理!非常感謝! – Huibear

+0

我可以問另一個問題:如果我要將它放在模塊中,我該怎麼辦?不,我有一個問題,當我在其他電子表格上運行插件時,它仍然指向我構建插件的電子表格上的值。我將該操作更改爲將在電子表格中使用某些值的事件。 – Huibear

相關問題