- 締切済み
クラスモジュールについて
はじめまして。 クラスモジュールと標準モジュールの大きな違いは何なんでしょうか?基本的な質問で申し訳ありません。どなたか教えてください。 ma-ki
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ARC
- ベストアンサー率46% (643/1383)
乱暴な言い方をすれば、「オブジェクトとして使用するモジュール」ってことになるのかな? 例えば、標準モジュールから、Formオブジェクトを呼び出して、プロパティやメソッドを操作しますよね? それと同じように、標準モジュールからクラスモジュールを呼び出して、(クラスモジュールに実装されている)プロパティやメソッドを操作するわけです。 使いこなすにはちょっとコツが要りますが、再利用性の高いクラスモジュールを作成すればアプリケーションの開発効率が大幅にアップします。 (ただし「何でもクラス主義(=クラス猿)」に陥らないように注意。標準モジュールとうまく使い分けることが重要です。) 月並みな回答ですが、実際に使ってみれば何となく理解できると思います。 '**** Hello.cls (クラスモジュール,オブジェクト名:Hello) ****** Option Explicit Dim mTarget As String Property Let Target(Target_ As String) 'プロパティの実装 mTarget = Target_ End Property Property Get Target() As String Target = mTarget End Property Public Sub SayHello() 'メソッドの実装 MsgBox "Hello " & mTarget & "!!" End Sub '*********** ここまで ************ '****フォームにボタン(Command1)を貼っ付けて…****** Private Sub Command1_Click() Dim Hello1 As New Hello Dim Hello2 As New Hello Hello1.Target = "World" Hello2.Target = "Everyone" Hello1.SayHello Hello2.SayHello End Sub '****ここまで****
- mfuku
- ベストアンサー率50% (173/345)
まず、拡張子の違い 標準モジュール(*.bas)、クラスモジュール(*.bas) 次に、呼び出し方法の違い 標準モジュールではPublic変数やプロシージャの名称を記述するだけでしたが、クラスモジュールでは、 クラス名.プロシージャ(変数/プロパティ) としなければなりません。 さらに、標準モジュールは同一プロジェクトからしか呼び出せませんでしたが、クラスモジュールは、ActiveX DLL/EXEとして、つまり、1つのオブジェクトとして、プロジェクトの外から呼び出すことができるという、大きな特徴があります。
- y_an
- ベストアンサー率57% (24/42)
詳しくは正しいか分かりませんが自分はこのように認識しています。 クラスのメリット 1)DLLを作成したときにインターフェイスとなる。 2)オブジェクト化できる。 例えばclsTestというクラスファイルを作成し、 そのメンバとしてValueという変数を持っている時、 Dim CLS1 As clsTest Dim CLS2 As clsTest Set CLS1 = New clsTest Set CLS2 = New clsTest CLS1.Value = "Test1" CLS2.Value = "Test2" という感じでオブジェクトとして 同じ変数でも別物として保持できる。 見た目のないコントロールのような感じです。 またValueという変数をプロパティとして持てば、 取得のみ可能とか設定のみ可能という風にもできます。 自分の知っているのは以上です。 参考になれば幸いです。
- mnabe
- ベストアンサー率33% (427/1283)
VBのバージョンは? ヘルプにそのまんまの項目があります。 『クラス モジュールと標準モジュール』を読んでみて下さい。