用VBA编写Excel插件,然后放一个触发它的button

我已经用VBA编写了一个简单的excel插件,它包含一个表单和相关的代码。 保存为插件,然后在Excel中安装后,什么也没有发生!

我需要在某个地方放一个button来触发我的加载项,就像“求解器”一样。 我真的需要它,请告诉我如何。

我真的很感激任何build议。

试试这个,需要添加到你的加载项,无论是在模块或ThisWorkbook。

Private Const Button as String = "SomeName" Sub Auto_Open 'Or Private Sub Workboo_Open() in ThisWorkbook 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 'Just in case a button with same name already exists Application.DisplayAlerts = True On Error GoTo 0 Set CmdBarMenuItem = CmdBarMenu.Controls.Add(Type:=msoControlButton) With CmdBarMenuItem .Caption = Button .OnAction = "MainSub" 'Name of the sub it will call when button is pushed End With End Sub 

确保在closuresExcel时删除button,否则每次打开插件时都会添加一个button。

 Sub Auto_Close 'Or Private Sub Workbook_BeforeClose(Cancel As Boolean) in ThisWorkbook 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 

你已经创build了你希望从button运行的子文件。

 Public Sub MainSub MsgBox("Hello") End Sub 

您还可以在“加载项”function区中添加一个列表框来保存多个button。 首先创build一个MenuItemtypes:= msoControlPopup然后在popup的添加button,如上所述。

除了这个VBA代码之外,您还可以轻松地转到文件 – >选项 – >自定义function区,然后添加一个新选项卡,并将一个macros指定给该组。 但是,这只会对你有用,上面的代码将允许任何人安装插件,并打开时自动button。

希望这回答你的问题。