誕生日にもらった意外なもの

はじめまして。

クラスモジュールと標準モジュールの大きな違いは何なんでしょうか?基本的な質問で申し訳ありません。どなたか教えてください。

ma-ki

A 回答 (4件)

乱暴な言い方をすれば、「オブジェクトとして使用するモジュール」ってことになるのかな?



例えば、標準モジュールから、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
'****ここまで****
    • good
    • 0

まず、拡張子の違い


標準モジュール(*.bas)、クラスモジュール(*.bas)

次に、呼び出し方法の違い
標準モジュールではPublic変数やプロシージャの名称を記述するだけでしたが、クラスモジュールでは、
クラス名.プロシージャ(変数/プロパティ)
としなければなりません。

さらに、標準モジュールは同一プロジェクトからしか呼び出せませんでしたが、クラスモジュールは、ActiveX DLL/EXEとして、つまり、1つのオブジェクトとして、プロジェクトの外から呼び出すことができるという、大きな特徴があります。
    • good
    • 0

詳しくは正しいか分かりませんが自分はこのように認識しています。



クラスのメリット
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という変数をプロパティとして持てば、
  取得のみ可能とか設定のみ可能という風にもできます。

自分の知っているのは以上です。
参考になれば幸いです。
    • good
    • 0

VBのバージョンは?



ヘルプにそのまんまの項目があります。

『クラス モジュールと標準モジュール』を読んでみて下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています