« ▼ダイエット大作戦(5ヶ月で8Kg減) | トップページ | ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) »

2007年9月 4日 (火)

◆Excel VBA(カスタムツールバーのボタンからマクロへ引数を渡す方法)

今回はカスタムツールバーのボタンからマクロへ引数を渡す方法です。
いろいろ機会のある度に調べたり試したりして出来なかった長年の疑問がやっと解決してとてもスッキリした気持ちです。
複数のボタンから同一のプロシージャを設定すれば当然同じ機能が実行されますね。でも、ボタンによって微妙に処理を切り分けたいときに、ボタン数分プロシージャを作成するのはロジックが冗長的になりメンテナンスが煩雑になります。そこで、ボタンから実行するプロシージャは一つで、どのボタンから実行されたかを引数で判定すれば、共通処理とボタン固有のロジック部分とでスッキリとします。ではその手順を以下に記述します。

(1)プロシージャ側の記述(イメージ)
プロシージャはPublicで作成します。Privateだとボタンから呼び出せないようです。
引数はOptionalで受け取ります。

Public Sub Main(Optional pArg As Integer)

     共通処理
    
     'ボタン固有の処理
     Select Case pArg
     Case 1
        ボタン1の処理
     Case 2
        ボタン2の処理
     Case 3
        ボタン3の処理
        ・
        ・
        ・
     End Select
    
End Sub

(2)カスタムツールバー側の設定
カスタムツールバーを作成し、ボタンを配置します。
ボタン1の「マクロの登録」のマクロ名の設定を @@@@@.xls!'Main 1'と、プロシージャ名 + ブランク + 引数をシングルクォートで括ります。ボタンごとに別の引数を設定してやれば処理を切り分けることができます。

シングルクォートで括るところがポイントです。市販のマニュアル本などでは結構当たり前のテクニックだったりするのかもしれませんがこれを発見したときは本当にうれしかった!!お試しください。

« ▼ダイエット大作戦(5ヶ月で8Kg減) | トップページ | ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) »

パソコン・インターネット」カテゴリの記事

コメント

ありがとうございました。
助かりました。

コメントを書く

(ウェブ上には掲載しません)

« ▼ダイエット大作戦(5ヶ月で8Kg減) | トップページ | ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) »