プロが教えるわが家の防犯対策術!

Excelマクロ初心者です。
Excelマクロにて下記のコードを実行してみました。
ツールバーは出たのですがツールバーのボタンをクリックすると、
エラーメッセージが出てしまいます。

更新ボタンをクリック
マクロ 'xxx.xls!BTN_TOUROKU'が見つかりません
と出てしまいます。

OnActionが旨く動きません。どうして動かないのでしょうか?
---------------------------------------------------------------
Option Explicit

Private Const g_cnsTITLE = "更新ツールバー"
' 立ち上げ時自動実行処理
Sub Workbook_Open()
Dim xlAPP As Application
Dim objBar As CommandBar
Dim objCont As CommandBarControl
Dim objBtn As CommandBarButton
Dim vntCaption As Variant
Dim vntTipText As Variant
Dim vntOnAction As Variant
Dim IX As Integer
Dim blnTRUE As Boolean

Set xlAPP = Application
' ボタンのタイトルを設定
vntCaption = Array("登録(&A)", "更新(&U)", "削除(&X)") ' (1)
' ボタンにマウスを当てた時に表示されるテキストを設定
vntTipText = Array("登録を行ないます", "更新を行ないます", "削除を行ないます")
' ボタンの動作マクロを指定
vntOnAction = Array("BTN_TOUROKU", "BTN_KOUSHIN", "BTN_SAKUJO")

' ツールバーを追加する ' (2)
Set objBar = xlAPP.CommandBars.Add(Name:=g_cnsTITLE, Position:=msoBarTop)
' 1番目はボタンの境界をなしにする
blnTRUE = False
' ボタンを3つ追加する
For IX = 0 To 2
' まずボタンを指定してコントロールを追加
Set objCont = objBar.Controls.Add(Type:=msoControlButton) ' (3)
' ボタンの境界を設定
objCont.BeginGroup = blnTRUE ' (4)
' CommandBarButtonオブジェクトを取得
Set objBtn = objCont ' (5)
objBtn.Style = msoButtonCaption ' ボタン名を表示 ' (6)
objBtn.Caption = vntCaption(IX) ' 表示名を設定
objBtn.TooltipText = vntTipText(IX) ' マウスを当てた時のツールチップテキスト
'objBtn.OnAction = vntOnAction(IX) ' 動作マクロを設定
objBtn.OnAction = vntOnAction(IX)

' 2番目以降はボタンの境界を設定
blnTRUE = True
Next IX
' ツールバーを表示する
objBar.Visible = True ' ツールバーを表示
' ツールバーを非表示にできなくする
objBar.Protection = msoBarNoChangeVisible ' ツールバーをマウスで引き出したり右クリックした時に「閉じる」の操作ができないようにする
ActiveWindow.ScrollRow = 1

' オブジェクトを廃棄
Set objBtn = Nothing
Set objCont = Nothing
Set objBar = Nothing
End Sub

' 閉じる時の自動実行処理
Sub Workbook_BeforeClose(Cancel As Boolean)
Dim xlAPP As Application
Dim objBar As CommandBar

Set xlAPP = Application
' ツールバーオブジェクトを取得する
Set objBar = xlAPP.CommandBars(g_cnsTITLE)
' ツールバーを削除する
objBar.Delete
' オブジェクトを廃棄
Set objBar = Nothing
End Sub

' 「登録」ボタンがクリックされた時の処理
Sub BTN_TOUROKU()
MsgBox "「登録」が押されました"
End Sub

' 「更新」ボタンがクリックされた時の処理
Sub BTN_KOUSHIN()
MsgBox "「更新」が押されました"
End Sub

' 「削除」ボタンがクリックされた時の処理
Sub BTN_SAKUJO()
MsgBox "「削除」が押されました"
End Sub
---------------------------------------------------------------

A 回答 (1件)

'--------------------------------------------


' 「登録」ボタンがクリックされた時の処理
Sub BTN_TOUROKU()
MsgBox "「登録」が押されました"
End Sub

' 「更新」ボタンがクリックされた時の処理
Sub BTN_KOUSHIN()
MsgBox "「更新」が押されました"
End Sub

' 「削除」ボタンがクリックされた時の処理
Sub BTN_SAKUJO()
MsgBox "「削除」が押されました"
End Sub
'-----------------------------------------------

●上記3つのプロシージャを標準モジュールに移動して実行してみてください。
    • good
    • 0
この回答へのお礼

ワークシート全体にかかるものなのでThisWorkbookに記述していました。
標準モジュールに記述したところ動かす事が出来ました。
勉強不足でした。ありがとうございます。

お礼日時:2009/04/01 08:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!