【ACCESS VBA】同じコードは、2度書くな コード短く書く裏技

記事
IT・テクノロジー

YouTubeでも解説しています。是非、ご覧ください。


クラスモジュールを勉強していくと、長いコードが短くなる利点があります。
その前に、設計図通りに動くというのが、快感です。

同じコードは、2度書くな コードを短く書く裏技

こんにちは。伊川です。
前回、紹介した、ラーメン屋のオヤジが売上を集計するというネタを紹介しました。
しかし、ラーメン屋のオヤジから、改修の依頼が来ました。
メニューが増えた。
塩ラーメンを、豚骨塩ラーメンにしたい
月のメンテナンス料は、支払いしたくないので、自分で改修できるようにしたい。
ラーメン屋のオヤジの、要望を叶えることができるのか?
こんなシーンを想定してください。
あまり、親切にやると、それで終わってしまいます。
ほんとうに、完璧なシステムを作成するか
少しだけ、不親切に作成して、ミジカメ料を頂くか
運命の分かれ道です。
結論を言うと、クラスモジュールでコードを短くします。
前回紹介した、Collecitonや、カンタンな配列で、オヤジの要望をかなえます。


このブログはこんな人にお勧め

VBAのコードを、組み合わせて、感動したい人
クラスモジュールを勉強している人
配列を勉強している人

このブログを、読み終わるころには・・・・

コードの可読性が上がり、前回紹介したコードより、断然、コードの量が少なくなりました。
単純に感動できると思います。
論より証拠で、最後まで、読んでいただければと思います。

クラスモジュールで、コードを短く

実務の中で、下記のようなコードを、書くことがあると思います。
TextBox1=1
TextBox1=2
TextBox1=3
TextBox1=4
TextBox1=5
TextBox1=6
TextBox1=7
TextBox1=8
処理内容は、右辺の処理だけが違うというシーンです。

これは、yahooの知恵袋で、見つけた回答ですが、回答が見事でした。
何度、この回答を、読み返したかわかりません。
全然、意味を理解できませんでしたが、勉強したいと思った瞬間です。
VBAのクラスモジュールは、本来のクラスモジュールと、利用方法が違うようです。
本来は、人のデータを管理するなど、以前紹介した、ExcelVBA 実戦のための技術が、王道です。
しかし、クラスモジュールを、利用することで、一括で、イベントを発生させることができます。
では、ラーメン屋のオヤジの要望を叶えます。

一括でイベントを発生 作業手順 その1 クラスモジュール作成前のコード

1.jpg

ライス、麻婆豆腐、野菜炒めが増えました。

2.jpg

以前は、各ボタンに、上記のコードを、記載しています。
ボタンは、全部で8個あります。
コードは、各ボタンにつき、7行
約、変数の宣言等も含めると、60行から、70行のコードを記載するということになります。
コピペを、利用して記載したとしても、ミスが発生しそうな予感です。
しかも、メニューが増える度に、VBEの画面を起動して、直さなければならない。
同じことは二度しないと、キモに銘じましょう。
3.jpg

こんな時も、即時対応できるようにしましょう。
この場合、ラーメン屋のオヤジの、オヤジがやることは、2つです。
Captionを、塩ラーメンから、豚骨塩ラーメンに変更する。
MT_商品に、豚骨塩ラーメンの価格を設定する。
それすらも、できないなら、オヤジから、ミジカメ料をもらいます。

4.jpg

一括でイベントを発生 作業手順 その2 クラスモジュールを作成


5.jpg

これが、ラーメン屋のオヤジのための、設計図です。

一括でイベントを発生 作業手順 その3 フォームモジュールに記載する


6.jpg

このコードを、記載することで、どのボタンを押しても、
テキスボックスの、上から順番に入力されます。
コードの解説ですが、Staticを、初めて見る人もいるかと思います。
Static( スタァティィク)ステートメントは、変数のデータ型を宣言しメモリ領域を割り当てます。
プロシージャ レベルで使用します。
Static ステートメントで宣言した変数 (静的変数) の値は、プログラムが実行されている間をとおして保持されます。
Static以外は、どうでしょうか?
コードの可読性が、明らかに向上しています。
クラスモジュール、配列、Collecitonが絡んでいますが、意味を理解できない人は、いないと思います。
クラスモジュールも含めて、20行足らずで完了です。

一括でイベントを発生 作業手順 その4 空白まで転送

7.jpg
2行追加しました。
Excelで言うところの、最後までという書き方です。
ここでも、Nz関数が活躍しています。
テキストが、空白じゃなければ、レコードを追加しろと記載してます。

余談 作業手順 その5 売上管理

今回のように、メニューが増える、価格が改定になるというような場合があると思います。
Q_売上を、テーブル化することを、おススメします。
なぜならば、価格は、オートルックアップクエリで参照しています。
価格を変更することで、過去に設定した料金も、価格改定の料金になるからです
その日の集計が完了したら、別テーブルに、売上を追加することを、おススメします。

ここがポイント

クラスモジュールは、楽しいですね。
なせ、書籍化されないのか、なぜ、もっと、ネットに情報がないのか不思議です。
それは、クラスモジュールを知らなくても、出来てしまうからですね。
しかし、以前のコードと比べて、本当に、メンテナンスが楽になり、可読性が向上していると思います。
ここを、楽しいと思えば、VBAも、ACCESSも、もっと、もっと、楽しくなります。

まとめ 

今回は、勉強していて、楽しかったですね。
本当に、楽しかった。
クラスモジュールを知らなくても、実現できることは、わかっています。
ExcelVBA 実戦のための技術でも、言っていますが、動けばいいレベルのVBAを、卒業するために、この書籍を購入したのです。
第9章の関しては、もう、20回くらい読んでいます。
これからも、読み返すと思います。
今回も最後まで読んでいただきありがとうございました。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す