
【Excel VBA】クラスモジュールを利用して、Excelでイベントを一括管理する
YouTbeでも紹介しています。是非、ご覧ください。
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の、ご視聴者様から、クラスモジュールについて質問を受けました。
当時の私は、スキルがなく回答できませんでした。
そこから、クラスモジュールは、たい焼きから始まり、瞑想するとこになるのです。
しかし、コツコツやればできます。
コツコツね。
今回も最後まで読んでいただき、ありがとうございました。
サンプルファイル
私のホームページでも販売しています。このようなファイルは、全部で、300ファイル前後ありますが、総ダウンロード数は、10,000件を、超えました。10,000件超えてから、面倒なので、カウントしていないです。
勉強したい方、会社の実務で利用したい方にお勧めです。
はっきり言いますが、ネットで調べる時間を考えたら、購入したほうが、時間の節約になります。
まして、ネットのコードは、作動するとは限りません。
料金は、200円です。
ここから先は
¥ 200
よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。