Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

VBA 初段から二段へのステップアップ ~クラスとオブジェクトを確実に身に付ける勉強方法 5つの手順~

VBAスキル初段から二段にステップアップする為の道のりについて解説します。VBAにおけるプログラミングで初段と二段には段差があります。それはオブジェクト指向です。二段へのステップはオブジェクト指向をどう攻略するかに掛かっています。今回はどのようにオブジェクト指向を身に付けて二段へのステップアップを図るかについて解説します。

なお、この記事は1回の読み切りで、連載ではありません。

この記事は初段です。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。

目次

二段へのステップに必要なのはオブジェクト指向

初段と二段の違いはオブジェクト指向を取り入れているかどうかです。クラスモジュールを使って独自のクラスを設計し、メンテナンス性の高い、きれいなコードを書いているかどうかです。つまり、クラスを学んで身につける事が二段へのステップアップにつながります。

オブジェクト指向を身に付けるための勉強方法・5つの手順

オブジェクト指向を身に付けるには正しいステップを踏むことが大事です。と言うのも、書けば書くほど上達した上級までと異なり、今までとは頭を切り替えなければならないためです。正しいステップは次の通りです。

  1. 標準モジュールの役割を理解する
  2. オブジェクトについて学ぶ
  3. クラスについて学ぶ
  4. クラスをどんなに小さくてもいいのでまず一つクラスを作る
  5. どんなクラスを作れば思い描きながら、全体を設計することができるようになる

順に解説していきます。

標準モジュールの役割を理解する

まずは、標準モジュールの本当の使い方、意義を理解する事から始めます。「今更か」と思うかもしれませんが違います。オブジェクト指向が理解できない大きな原因の1つが、標準モジュールの役割、意義を理解していないことにあります。しかもクラスそのものの解説はネットでも見かけますが、標準モジュールとの関係について触れられている記事はごくわずかです。

標準モジュールの本当の意義は、必要な機能を呼び出すことです。機能はオブジェクトが提供します。なので、計算したりブックを閉じたりする事を書くのが本来的な意義では無く、そのような機能を呼び出す、という処理の流れを記述するのが標準モジュールの本来的な意義です。

標準モジュールについては、エクセルVBA 上級者から初段へのステップアップ② 標準モジュールの役割を理解して処理の流れにこだわるで詳しく解説しています。

オブジェクトについて学ぶ

標準モジュールの役割が分かったら、オブジェクトについて学びます。そもそもオブジェクトとは何なのか、についてです。いきなりクラスモジュールの書き方の解説を読むところから入ると挫折しやすいです。私もネットで「クラスモジュール」で検索して、ずいぶんオブジェクト指向を理解するのに遠回りしました。まずはオブジェクトとは何なのか、概念的なところの理解を強化しましょう。

オブジェクトに関しては、VBAのクラスを使う① クラスを使うためのオブジェクトとメソッドの前提知識で詳しく解説しています。

クラスについて学ぶ

オブジェクトの意味を理解して、ここまで来てようやくクラスの概念について学びます。オブジェクトが何のためにあるのかが分かっているので、それを作るためのクラスと言う概念がすっと入ってきます。そしてクラスの概念が理解出来たら、クラスモジュールの書き方を勉強します。

クラスの概念とクラスモジュールの書き方についてはVBA クラスモジュールの使い方を超簡単に日本語のクラス名で具体的に解説する① A1セルの値をメッセージボックスに表示させるだけのクラスで徹底的に解説しています。3回の連載記事になっており、最終的に、メールを作成するのに必要な宛先や本文の文字列を作成するというオブジェクトを生成するクラスを作成します。

クラスをどんなに小さくてもいいのでまず一つクラスを作る

初心者と初級者の違いがどんなに小さくてもいいので、一つ、実際に動くプログラムを完成させることでした。クラスもどんなに小さくてもいいので一つ、完成させる様にしましょう。ゼロからイチにするのは貴い作業です。

クラスをひとつ作れば、もうこっちのものです。コツが分かったので、あとはクラスの持つメソッドやプロパティを充実させていけばいいだけです。

どんなクラスを作れば思い描きながら、全体を設計することができるようになる

クラスを自由に作れるようになると、プログラミングに入る前の設計の段階で、どんな機能をもつクラスを作れば良いか思い描けるようになります。標準プロシジャが機能を呼び出す、という意味が本当に分かってきた段階に突入します。

機能と機能を呼び出すモジュールを分離する。これこそがオブジェクト指向の意味合いです。ここまで来ればオブジェクト指向が身についたと言えます。VBAのクラスには継承など高度な機能は無いので、これでクラスをマスターしたことになります。

まとめ

以上をまとめると、下記の通りです。

  • クラスを確実に身に付けるには5つの手順を守ることが重要
  • 手順を守らずいきなりクラスモジュールの書き方から入ると、理解が進まずかえって遠回りになる
  • クラスとオブジェクトを確実に身に付ける勉強方法 5つの手順は下記の通り
  1. 標準モジュールの役割を理解する
  2. オブジェクトについて学ぶ
  3. クラスについて学ぶ
  4. クラスをどんなに小さくてもいいのでまず一つクラスを作る
  5. どんなクラスを作れば思い描きながら、全体を設計することができるようになる

それでは、クラスを身に付けて二段を目指して頑張っていきましょう!