2012-04-30 22 views
0

私はAccess VBA Editorで独自のツールバーボタン(commandbarbutton)を作成しようとしています。それは "RunTests"と呼ばれるパブリックモジュールでプロシージャを実行するためのボタンです。私はそのようにボタンを作った:Access VBA CommandBarButton.OnActionが機能しません

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 - 私はそれを閉じることができたらすぐに私自身の質問に答えます。解決策が見つかりました

答えて

1

私のための鍵は、「ru​​ntestsと書い」公共のサブルーチンを作ることでした。それがプライベートだったとき、それはうまくいかなかった。

cmdButton.OnAction = "=RunTests()" 

public sub RunTests() 

private sub RunTests()は機能しません。

0

残念ながら私は空想的で、クラス内のボタンとメニューを定義しようとしました。 OnActionサブルーチンは、クラスの一部としてローカルに定義されている間は実行されませんでした。クラス定義の外で定義されたときにのみ実行されます。

クラスを多くのサブ関数と関数を含む単なるモジュールに再定義すると、OnActionサブルーチンが実行されました。スコープと可視性に関連しているか、クラスメソッドへの呼び出しで正しいOnActionセマンティクスを持っていない可能性があります。要点は、ボタン/メニュー/ウィジェットをモジュールで定義することです。これははるかに簡単です。 (私はExcel VBAを使用していましたが、AccessとExcelのVBAは同じだと思います)

関連する問題