クラスモジュールに定義されているオブジェクトを利用したい場合は、「オブジェクト変数」という特別な変数を用意し、それをオブジェクトとして利用します。
これは、構造体を利用する場合と似ています。
構造体の場合も、そのひな形に対する実体(変数)が必要でしたね。
クラスモジュールはフォームモジュールと違って、具体的に変数を用意してやらないと使うことはできません。たとえば、TV というクラスがあったとしても、
TV.Channel = 6という風に、直接 TV を操作することはできません。
TV というのはクラス名だからです。
Dim MyTV As TVオブジェクト変数 MyTV を、TV クラスのオブジェクトとして宣言しています。
MyTV.Channel = 6オブジェクトは、このようにして操作します。
ところが、このまま実行してみると、「オブジェクト変数が設定されていない」というエラーが発生します。
実は、オブジェクト変数とは「オブジェクトの実体を入れる器」でしかなく、宣言しただけでは「オブジェクト」にはならないのです。
そこで、「オブジェクトの実体」を生成し、この箱に入れる作業が必要になります。
| オブジェクト変数自体は、ただの箱… | |
| オブジェクト変数に入る実体(インスタンス) | |
| インスタンスが入ったオブジェクト変数 | |
| クラス(設計図) |
Set MyTV = New TV 'Set object = New classNew は、新しいオブジェクトインスタンスを生成するキーワードです。
オブジェクトの実体のことを、「インスタンス」と呼びます。
上のようにすると、そのクラスの新しいインスタンスが生成されます。
前に付いている Set は、「オブジェクトインスタンスの代入」である場合に必要なキーワードです。通常の変数代入の時にはこれは必要ありませんが、実は Let というキーワードがあり、省略されているだけです。オブジェクト代入の場合は Set を省略することができません。
Dim MyTV As TV
Set MyTV = New TV
Let MyTV.Channel = 6
これでようやく MyTV を TV クラスのオブジェクトとして扱うことができます。

クラスとコントロールは同じような存在です。
前者は、このようにコードの中で変数として生成され、後者は、フォームの上に貼り付けられて生成されるのです。
フォームもコントロールもクラスですから、その実体もオブジェクト変数と同じような存在です。クラスモジュールの実体と違う点は、そのインスタンスの生成方法や存在する場所です。フォームやコントロールは、プロジェクトに追加するだけで宣言され、プログラム実行時に自動的に生成されているのです。
一方のクラスモジュールの実体は、自動的には生成することができませんから、このような手順が必要なのでした。
基本的に、クラスモジュールから提供されるオブジェクトはこの方法で利用します。構造体データとはちょっと違います。しっかり抑えておいてください。