【问题标题】:calling VBA forms from a button in Excel从 Excel 中的按钮调用 VBA 表单
【发布时间】:2016-10-27 17:27:10
【问题描述】:

我有一个宏可以解析 Excel 中的一个大文件。我创建了一个表单,允许我搜索并提供特定消息的摘要。我可以放

FormName.Show

在宏的末尾,它可以工作。当解析宏完成时,表单将显示。但我并不总是希望表单出现,有时我想在保存电子表格后再次调用它。所以我写了另一个函数,可以创建一个可以打开表单的按钮。在 .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

这不起作用,它创建了按钮,但是当我点击按钮时,我得到了

“无法运行宏“xxxx.xlam'!FormName.Show' 该工作簿中的宏可能不可用,或者所有宏都可能被禁用。

为什么它在主宏中有效,但在按钮 OnAction 中无效?

谢谢

【问题讨论】:

    标签: excel forms vba


    【解决方案1】:

    根据MSDNShape.OnAction 需要宏名称,而不是 VBA 代码。您已尝试将 VBA 代码传递给它。试试这个:

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

    【讨论】:

    • 没问题。如果答案之一解决了您的问题,请考虑将其标记为答案。
    【解决方案2】:

    .OnAction 不仅会运行宏,而且不会评估代码。将此粘贴到标准模块中。


    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多