ExcelVBAクラスモジュール
VBAを使用するときは、VBAで定義されたプロパティと属性を使用しますが、独自のプロパティとメソッドと属性を作成する場合、つまりVBAでクラスモジュールを使用してユーザー定義にする場合はどうなりますか?クラスモジュールには、ユーザーが関数、プロパティ、およびオブジェクトに対して定義した独自のコードセットがあります。
クラスモジュールは、オブジェクトを作成するために使用されます。変数であってもオブジェクトと言うと、それらは小さなプログラムです。コードを書いている間、私たちは通常モジュールで書きます。基本モジュールは、仕事をするためのコードを書く場所です。また、ユーザーフォームを使用してグラフィックユーザーインターフェイスを作成します。
しかし、上の画像を見ると、「クラスモジュール」がわかります。この投稿を読むまで、あなたがそれに触れていないことは確かです。通常のモジュール自体を使用してすべてのジョブを実行できる場合、このVBAクラスモジュールは何であるか疑問に思われるはずです。
クラスモジュールとは何ですか?
クラスモジュールを使用すると、「ワークシート」、「ワークブック」、「範囲」などの通常のモジュールに組み込みオブジェクトがあるのと同じように、ユーザーが独自のオブジェクトを作成できます。
このようにクラスモジュールを使用して、カスタムオブジェクトを作成できます。
クラスはオブジェクトと直接的な関係があります。たとえば、マシンを構築するためのマシン図がありますが、それはまだマシンではないことを忘れないでください。このマシン図を使用すると、そのような多くのマシンを構築できます。
たとえば、さまざまなマシンブランドをリストして、さまざまなモデルの特性をリストしたい場合です。
機械には、ブランド名、シリーズ番号、機械の出力、機械の色、関連するモーターの数、モーターの燃料の種類などがあります。技術用語では、これらは「プロパティ」と呼ばれます。
機械の特性に関しては、始動、停止、モーターの速度の増加、一時停止などが可能です。これらは「メソッド」と呼ばれます。
例
このVBAクラステンプレートはここからダウンロードできます–VBAクラステンプレート理論的な部分を読むのはいつもつまらないことなので、ボールを転がし始めましょう。クラスモジュールを挿入するには、Visual BasicEditorの挿入オプションに移動します。
これで、次のようなクラスモジュールを見ることができます。
これは、通常のモジュールとして上に示したものと似ています。プロパティウィンドウでクラスモジュールの名前を変更します。プロパティウィンドウを表示するには、F4キーを押します。
次に、変数を文字列として宣言します。
vbaでサブプロシージャを作成せずに、変数を宣言する必要があります。また、今回は「Dim」ではなく「Public」という単語を使用します。
これで、任意のモジュールおよびクラスモジュールでこの変数にアクセスできます。
次に、通常のモジュールに移動して、変数に名前を付けます。
変数を宣言した後、VBAでデータ型を割り当てる必要があります。データ型を割り当てる代わりに、クラスモジュールの名前(CM)を指定するだけです。
これで、変数「k」を使用して、クラスモジュールで定義したパブリック変数「MyValue」にアクセスできます。
上の図でわかるように、クラスモジュールからの変数名のオプションを示して値を割り当てています。
次に、割り当てられた変数の値をVBAメッセージボックスに表示します。
コード:
Sub Class_Example()Dim k As New CM k.MyValue = "Hello" MsgBox k.MyValue End Sub
F5キーを使用して、または手動でこのコードを実行して、結果を表示します。
クラスモジュールとオブジェクト
クラスモジュールの初期段階では、誰もがクラスとは何か、オブジェクトとは何かについて混乱します。
これを理解するために、以前の機械図の例を思い出してください。マシンを作成するために最初に必要なことは、最初にマシンを設計する必要があり、次にその設計で複数のコピーを複製できることです。
これをクラスモジュールに関連付けます。
- ここで、クラスモジュールはデザインです。そして、オブジェクトはデザインによって作成されたコピーです。
- もう1つの興味深い点は、クラスモジュールからオブジェクトを作成するために「new」という単語を使用する必要があることです。
以下はその一例です。
ワークシート、ワークブック、範囲オブジェクトなどの組み込みオブジェクトを使用する場合、「新しい」という言葉は使用しません。
クラスモジュールの手順を開始するには、これらの基本的なことを知っておく必要があります。今後の記事では、次のレベルの例を紹介します。
これを理解するのは難しいようですが、クラスモジュールで過ごす時間が長くなるほど、それに慣れることになります。