1

我正在尝试在 Access VBA 编辑器中创建自己的工具栏按钮(commandbarbutton)。它是一个在名为“RunTests”的公共模块中运行过程的按钮。我做了这样的按钮:

Public Sub CreateToolbar()
    Dim cmdBar As CommandBar
    Dim cmdButton As CommandBarButton
    Set cmdBar = Application.VBE.CommandBars.Add("Run Tests")
    Set cmdButton = cmdBar.Controls.Add(msoControlButton)
    cmdButton.FaceId = 558
    cmdButton.DescriptionText = "Run the tests"
    cmdButton.Caption = "Run Tests"
    cmdButton.OnAction = "RunTests"
    cmdButton.Enabled = True
    cmdButton.Style = msoButtonIconAndCaption
    cmdBar.Visible = True
End Sub

我运行该程序作为测试。它创建了按钮就好了。但是“点击”动作没有响应。该按钮似乎不可点击。有人知道为什么吗?

编辑:找到解决方案:http: //support.microsoft.com/default.aspx ?scid=kb;en-us;Q280607 - 我会尽快回答我自己的问题以关闭它。

4

3 回答 3

2

对我来说,关键是让“RunTests”成为一个公共子程序。当它是私有的时,它不起作用。

cmdButton.OnAction = "=RunTests()"

public sub RunTests()

private sub RunTests()不起作用。

于 2015-01-20T18:02:12.557 回答
0

找到解决方案 - 要使其工作,您必须实施此处描述的解决方法:http: //support.microsoft.com/default.aspx ?scid=kb;en-us;Q280607

于 2013-02-01T00:00:10.537 回答
0

不幸的是,我试图在一个类中定义我的按钮和菜单。OnAction 子例程在本地定义为类的一部分时从未执行过。它只会在类定义之外定义时执行。

当我将我的类重新定义为包含许多子程序和函数的模块时,执行了 OnAction 子例程。可能与范围和可见性有关,或者我没有正确的 OnAction 语义来调用类方法。底线是在模块中定义按钮/菜单/小部件,这会容易得多。(我使用的是 Excel VBA,但我认为 Access 和 Excel VBA 是相同的。)

于 2015-05-28T22:47:44.993 回答