ACCESSで、クラスモジュールを利用して、イベントの一括管理を紹介しました。
今回は、Excelで、クラスモジュールを利用して、イベントの一括管理を、行います。
目次
クラスモジュールを利用して、Excelでイベントを一括管理する
こんにちは。伊川(@naonaoke)です。
以前、コンボボックスを利用しないで、連動した値を取得する方法を紹介しました。
コンボボックスを作成したほうが楽だとは思います。
しかし、配列の勉強もかねて、ユーザーフォームで作成しました。
下記の記事を参照してください。
クラスモジュールは、VBAにおいては、本来のクラスモジュールとは、違うということを、
ACCESSのクラスモジュールで紹介しました。
下記の記事を参照してください。
VBAでの、クラスモジュールは、イベントの一括管理と覚えてください。
また、ACCESSとでは、微妙に書き方が違いますので、是非、ACCESSのクラスモジュールと見比べてください。
このブログはこんな人にお勧め
- クラスモジュールを勉強している人
- クラスモジュールの適当なサンプルがない人
- クラスモジュールが、全然、理解できない人
しかし、コードを眺めることで、少しだけ理解できるようになりました。
単純なサンプルですが、是非、コード眺めて、理解するように努めてください。
Excelで、イベントの一括管理
ACCESSも、Excelも、イベントの一括管理は、WithEventsを利用します。
クラスモジュール作成のポイントですが、丁寧に考える事です。
丁寧というのは、1個、1個の変数が、つながるように考えます。
つまり、方程式を、解く感覚と同じです。
後は、Collectionを使って、記載するという感覚です。
下記の記事を参照してください。
Ecxcelでイベントの一括管理 作業手順 その1 クラスモジュールを利用するとき
Private Sub CommandButton1_Click()
TextBox1 = CommandButton1.Caption
End Sub
Private Sub CommandButton2_Click()
TextBox1 = CommandButton2.Caption
End Sub
Private Sub CommandButton3_Click()
TextBox1 = CommandButton3.Caption
End Sub
Private Sub CommandButton4_Click()
TextBox1 = CommandButton4.Caption
End Sub
このように、左辺が、TextBox1に対して、右辺の処理だけが変化する場合は、クラスモジュールを利用したほうが良いと思います。
当然、異なる利用方法もあります。
しかし、メルクマールは、右辺、または、左辺の処理が異なる場合です。
Ecxcelでイベントの一括管理 作業手順 その2 ユーザーフォームでの処理
どのCommandButtonクリックしても、TextBox1に反映するようにします。
今回は、CommandButtonが、8個しかないですが、これが、もし、CommandButtonが100個あったら大変ですよね。
コピペでも大変です。
同じコードは二度書くなと言います。
1行、2行なら、だれでもできます。
100個あったらどうしようと、考えましょう。
そうすると、効率よくコードを記載しようと思ってきます。
Ecxcelでイベントの一括管理 作業手順 その3 クラスモジュール
ユーザーフォーム上のCommandButtonは、cmdというもので、管理されます。
cmd にclという変数を代入します。
これは、後で、ユーザーフォームに、出現します。
そして、cmdをクリックしたら、TextBox1に、各、CommandButtonのCaptionを書きだせと記載しています。
Ecxcelでイベントの一括管理 作業手順 その4 ユーザーフォーム
ACCESSのクラスモジュールと同じなのですが、UserForm_Initializeは、ACCESSにはありません。
この辺が、少し、ACCESSとExcelの違いですね。
要するに、CommandButtonという、タイプに関ては、
clで設定した、インスタンスを発生させます。
つまり、CommandButtonをクリックしたら、Captionを書き出せというイベントです。
ここがポイント
一括でなにかしたいと思ったら、クラスモジュールを思い出しましょう。
仕切りが高いと思うのは、利用したことがないからです。
コード眺めて、こんなコードを書くんだと思えば、それで十分です。
最初は、結構難しいけど、このような初期設定をしておくと、本当に、楽になります。
まとめ
2年半くらい前に、YouTubeの、ご視聴者様から、クラスモジュールについて質問を受けました。
当時の私は、スキルがなく回答できませんでした。
そこから、クラスモジュールは、たい焼きから始まり、瞑想するとこになるのです。
しかし、コツコツやればできます。
コツコツね。
今回も最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No285です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。