从Excel中的button调用VBA表单

我有一个macrosparsingExcel中的大文件。 我创build了一个表单,允许我search并提供特定消息的摘要。 我可以放

FormName.Show 

在macros的末尾,它的工作原理。 parsingmacros完成时将显示表单。 但是我并不总是希望表单出现,有时我想在保存电子表格后再次调用它。 所以我写了另一个函数,可以创build一个可以打开表单的button。 在.OnAction声明中我有OnAction =“FormName.Show”

 Sub Create_Button() ActiveSheet.Buttons.Add(437.25, 72, 125.25, 47.25).Select Selection.OnAction = "FormName.Show" Selection.Characters.Text = "Search Messages" End Sub 

这不起作用,它创build了button,但是当我点击我得到的button

“无法运行macros”xxxx.xlam“!FormName.Show”此macros可能不可用在此工作簿或所有macros可能被禁用。

为什么它在主macros而不是OnActionbutton中工作?

谢谢

每MSDN , Shape.OnAction需要一个macros名称,而不是VBA代码。 你已经试图传递它的VBA代码。 相反,试试这个:

 Selection.OnAction = "showForm" .... End Sub Public Sub showForm() FormName.Show End Sub 

.OnAction不仅会运行macros,也不会评估代码。 将其粘贴到标准模块中。


 Sub ShowUserform() FormName.Show End Sub Sub Create_Button() With ActiveSheet.Buttons.Add(437.25, 72, 125.25, 47.25) .OnAction = "ShowUserform" .Characters.Text = "Search Messages" End With End Sub 

在这里输入图像说明