クラスモジュールは、クラスを記述するためのモジュールです。
クラス設計専用のモジュールで、ひとつのモジュールがひとつのクラスを表します。
プログラマーは、構造体を作ったときのように、独自のオブジェクトをプロジェクトに追加することができます。プロパティやメソッドの動作も自分で定義します。

プロジェクトに追加したクラスは、VB 組み込みのオブジェクトと同じように使います。ただし、オブジェクトと言ってもフォームやコントロールのような外見は持っていません。コードの中で変数として扱う存在で、構造体と同じような立場にあります。


「構造体によるプログラミングの考え方」と、「オブジェクトによるプログラミングの考え方」には、大きな違いがあります。それは、「何を主体としているか」の違いです。
構造体の例では、確かにキャラクターをひとつのオブジェクトのように扱うことができます。しかし、構造体は「値」しか持っていません。値を操作したり利用するのは、別途の処理部分です。そして、その処理部分がプログラムの中心になります。
一方、オブジェクト指向プログラミングではオブジェクトが主役です。キャラクターを扱う処理もキャラクター自身が持っているので、オブジェクトのメソッドを”呼び出す”ことで実行します。処理部分では、オブジェクトに対して”呼びかける”作業が中心になります。
クラスモジュールは、フォームモジュールや標準モジュールとは性質が異なります。
つまり、同じようにプロジェクトに組み込んで使うモジュールでも、利用されるときの「立場」が違います。クラスモジュールが居る場所は、VB 組込型のオブジェクトクラスと同じような場所です。
標準モジュールの視界には、クラスモジュールは存在しません。
標準モジュールの視界に存在するものは、クラスモジュールで定義されたクラス、そしてそのクラスから生成されたオブジェクトのインスタンス(個々の実体)です。
逆に、標準モジュールは、プロジェクトに含まれるすべてのモジュールから見られています。クラスモジュールから標準モジュールのプロシージャを呼び出すこともできます。