クラスモジュールを勉強していくと、長いコードが短くなる利点があります。
その前に、設計図通りに動くというのが、快感です。
目次
同じコードは、2度書くな コードを短く書く裏技
こんにちは。伊川(@naonaoke)です。
前回、紹介した、ラーメン屋のオヤジが売上を集計するというネタを紹介しました。
しかし、ラーメン屋のオヤジから、改修の依頼が来ました。
メニューが増えた。
塩ラーメンを、豚骨塩ラーメンにしたい
月のメンテナンス料は、支払いしたくないので、自分で改修できるようにしたい。
ラーメン屋のオヤジの、要望を叶えることができるのか?
こんなシーンを想定してください。
あまり、親切にやると、それで終わってしまいます。
ほんとうに、完璧なシステムを作成するか
少しだけ、不親切に作成して、ミジカメ料を頂くか
運命の分かれ道です。
結論を言うと、クラスモジュールでコードを短くします。
前回紹介した、Collecitonや、カンタンな配列で、オヤジの要望をかなえます。
このブログはこんな人にお勧め
- VBAのコードを、組み合わせて、感動したい人
- クラスモジュールを勉強している人
- 配列を勉強している人
このブログを、読み終わるころには・・・・
単純に感動できると思います。
論より証拠で、最後まで、読んでいただければと思います。
クラスモジュールで、コードを短く
実務の中で、下記のようなコードを、書くことがあると思います。
TextBox1=1
TextBox1=2
TextBox1=3
TextBox1=4
TextBox1=5
TextBox1=6
TextBox1=7
TextBox1=8
処理内容は、右辺の処理だけが違うというシーンです。
これは、yahooの知恵袋で、見つけた回答ですが、回答が見事でした。
何度、この回答を、読み返したかわかりません。
全然、意味を理解できませんでしたが、勉強したいと思った瞬間です。
VBAのクラスモジュールは、本来のクラスモジュールと、利用方法が違うようです。
本来は、人のデータを管理するなど、以前紹介した、ExcelVBA 実戦のための技術が、王道です。
しかし、クラスモジュールを、利用することで、一括で、イベントを発生させることができます。
では、ラーメン屋のオヤジの要望を叶えます。
一括でイベントを発生 作業手順 その1 クラスモジュール作成前のコード
ライス、麻婆豆腐、野菜炒めが増えました。
以前は、各ボタンに、上記のコードを、記載しています。
ボタンは、全部で8個あります。
コードは、各ボタンにつき、7行
約、変数の宣言等も含めると、60行から、70行のコードを記載するということになります。
コピペを、利用して記載したとしても、ミスが発生しそうな予感です。
しかも、メニューが増える度に、VBEの画面を起動して、直さなければならない。
同じことは二度しないと、キモに銘じましょう。
こんな時も、即時対応できるようにしましょう。
この場合、ラーメン屋のオヤジの、オヤジがやることは、2つです。
Captionを、塩ラーメンから、豚骨塩ラーメンに変更する。
MT_商品に、豚骨塩ラーメンの価格を設定する。
それすらも、できないなら、オヤジから、ミジカメ料をもらいます。
一括でイベントを発生 作業手順 その2 クラスモジュールを作成
これが、ラーメン屋のオヤジのための、設計図です。
一括でイベントを発生 作業手順 その3 フォームモジュールに記載する
このコードを、記載することで、どのボタンを押しても、
テキスボックスの、上から順番に入力されます。
コードの解説ですが、Staticを、初めて見る人もいるかと思います。
Static( スタァティィク)ステートメントは、変数のデータ型を宣言しメモリ領域を割り当てます。
プロシージャ レベルで使用します。
Static ステートメントで宣言した変数 (静的変数) の値は、プログラムが実行されている間をとおして保持されます。
Static以外は、どうでしょうか?
コードの可読性が、明らかに向上しています。
クラスモジュール、配列、Collecitonが絡んでいますが、意味を理解できない人は、いないと思います。
クラスモジュールも含めて、20行足らずで完了です。
一括でイベントを発生 作業手順 その4 空白まで転送
2行追加しました。
Excelで言うところの、最後までという書き方です。
ここでも、Nz関数が活躍しています。
テキストが、空白じゃなければ、レコードを追加しろと記載しています。
余談 作業手順 その5 売上管理
今回のように、メニューが増える、価格が改定になるというような場合があると思います
Q_売上を、テーブル化することを、おススメします。
なぜならば、価格は、オートルックアップクエリで参照しています。
価格を変更することで、過去に設定した料金も、価格改定の料金になるからです
その日の集計が完了したら、別テーブルに、売上を追加することを、おススメします。
ここがポイント
クラスモジュールは、楽しいですね。
なせ、書籍化されないのか、なぜ、もっと、ネットに情報がないのか不思議です。
それは、クラスモジュールを知らなくても、出来てしまうからですね。
しかし、以前のコードと比べて、本当に、メンテナンスが楽になり、可読性が向上していると思います。
ここを、楽しいと思えば、VBAも、ACCESSも、もっと、もっと、楽しくなります。
まとめ
今回は、勉強していて、楽しかったですね。
本当に、楽しかった。
クラスモジュールを知らなくても、実現できることは、わかっています。
ExcelVBA 実戦のための技術でも、言っていますが、動けばいいレベルのVBAを、卒業するために、この書籍を購入したのです。
第9章の関しては、もう、20回くらい読んでいます。
これからも、読み返すと思います。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No280です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。