VBAでは、標準モジュール、クラスモジュール、ユーザーフォームの3種類のモジュールを作成することができます。
(ユーザーフォームもクラスモジュールの仲間です)
このページでは、VBAユーザーには比較的馴染みの薄い、クラスモジュールを取り扱います。
VBAは、クラスモジュールを使うことによってオブジェクト指向プログラミングをすることができます
(オブジェクト指向とはなにか?については、難しくなるのでここでは詳しく触れません)。
とはいえ、オブジェクト指向の要であるクラスモジュールは継承やオーバーロードなど、オブジェクト指向に欠かせない機能がサポートされていません。
完全にオブジェクト指向でやろうとすると、逆にソースコードが見にくくなったり、沢山のクラスモジュールであふれかえることになります。(冗長になりがち)
よって、VBAのクラスモジュールは何ができて何ができないかを見極めることが、クラスモジュールを扱うのに重要と言えるでしょう。
当サイトでは、あまりオブジェクト指向にはこだわらず、VBAのクラスモジュールができることを、紹介していこうと考えています。
クラスとは、オブジェクトの設計図やひな形にあたるものです。それ自体にデータを入れることはできません。
クラス(設計図)を元に生成した実体のことをインスタンスと呼びます。インスタンスを生成して、初めてデータを入れたり、そのデータを操作することができます。
例:

上記のデータをクラスで表すと、次のような形になります。

データをものにインスタンスを生成すると、次のようになります。

このように、データを元にクラスを設計し、インスタンスを生成して処理を行います。
VBAのクラスには、インスタンスの保持するデータ(プロパティ)と操作(メソッド)が存在します。
オブジェクト指向ではこれらをメンバ変数、メンバ関数などと呼ぶようですが、VBAではメンバ変数・関数というフレーズはあまり出てきません。
当サイトでも、データをプロパティ、操作をメソッドと呼ぶことにします。
それでは、実際にクラスモジュールを使ったコーディング例をお見せします。
(今回はクラスモジュール自体のコーディングは省いています。クラスモジュールのコーディング方法は次のページ以降で紹介しようと思います)

クラス [果物売上]を作成しました。このクラスには「名前」、「価格」、「在庫」、「仕入れ数」という4つのプロパティ(データ)と、「売上数計算」、「売上金額計算」という2つのメソッド(操作)を登録してあります。

(1)Dim ステートメントで 変数 Apple を定義しています。この時点では、変数 Apple はクラス 果物売上 だということが宣言されただけなので、中身は空っぽです。
(2)New キーワードで、 果物売上 クラスのインスタンス(実体)を生成し、 Set キーワードで 変数 Apple に代入しています。これにより、変数 Appleは 果物売上 クラスの実体を持ったことになります。

Dim ステートメントで 変数を定義した時点で、このようにメンバの一覧が表示されるようになります。
はプロパティ、
はメソッドを表します。
それでは、実際にクラスモジュールを用いたプログラムを紹介します。
次のコードは、変数Appleをクラス果物売上として定義し、インスタンスを生成した後、各プロパティに値を代入しています。

次のコードは、メソッド売上数計算と売上金額計算を実行し、結果をイミディエイトウィンドウに出力するものです。

上記コードの実行結果です。

今回は、「価格」、「在庫」、「仕入れ数」プロパティに値を代入し、「売上数」と「売上金額」が計算できるクラスを紹介しました。これだけを見ると、値を入れるだけで欲しい情報を取り出せる、魔法の箱の様だと思います。
このように、クラスモジュールを使えば、開発しているソフトに合わせた独自のオブジェクトを作ることができます。
次回は、クラスモジュールを作成し、メソッドを追加する方法を紹介します。