
マイクロソフトのAccess2000でVBAプログラミングを行なっておりますが、
基本的なことを教えてください。
「標準モジュール」と「クラスモジュール」の違いはなんですか?
例えば、どこからでも使えるプロシージャ
Public Function getSum( i1 as integer, i2 as interger )
getSum = i1 + i2
End Function
を定義したとして、標準モジュール内に書くのとクラスモジュール内に
書くのとでは、何が違ってきますか?その他とにかく「標準モジュール」
とクラスモジュールの違いを教えてください。
No.1ベストアンサー
- 回答日時:
Public Function getSum( i1 as integer, i2 as interger )
getSum = i1 + i2
End Function
のような関数なら、標準モジュールに書いた方がいい(使い勝手がいい)です。
クラスモジュールに書くと、
Set c1 = New ClassName1
c1.getSum(1, 2)
のように、オブジェクト ( c1 ) を作ってからメソッド ( getSum() ) を呼び出さなければなりません。
クラス/オブジェクトを使用すると、今までの中央集権的なプログラムが独立分散型のプログラムになります。要は、細かいことはなるべくおのおののオブジェクトにさせるということです。
簡単なクラス/オブジェクトの例ですが、
'-----------------------------------
'CRectangle.cls
'Class:CRectangle ( 長方形 )
'-----------------------------------
Public Width As Integer
Public Height As Integer
Public Function GetArea() As Long
GetArea = CLng(Width) * CLng(Height)
End Function
'-----------------------------------
'-----------------------------------
'フォームなど、どこか適当なところ
'-----------------------------------
Private Sub コマンド1_Click()
Dim c1 As CRectangle
Dim c2 As CRectangle
Set c1 = New CRectangle
c1.Height = 100
c1.Width = 200
Set c2 = New CRectangle
c2.Height = 150
c2.Width = 250
'面積の計算は各オブジェクトがやってくれる。
Debug.Print c1.GetArea
Debug.Print c2.GetArea
End Sub
↑これだけでは、あまりクラス/オブジェクトの恩恵が得られていませんが、とりあえず、こんな感じです。
クラスについて、ここで全てを語ることはできませんので、詳しいことは書籍などを参考にされた方がいいと思います。クラス/オブジェクトの根本的なことについては、Visual Basic でも Excel VBA でも Access VBA でも同じだと思いますので、クラスについて取り扱っているなら、Excel VBA の書籍でも構わないと思います。
ただ、VB/VBA のクラスは、C++ や Java のクラスとは全然違うというか、かなりチャチなので、C++ や Java の書籍は、「 VB/VBA のクラスがいかにチャチなのかを知る」にはいいと思いますが、VBA のクラスを勉強するには適さないと思います。最初はやはり VB/VBA 用のものを参考にされた方がよいでしょう。
お礼が遅くなりましたがありがとうございました。元々手続き型であるVBが無理やりオブジェクト指向になろうとしたのがVBにおけるクラスモジュールということでしょうか。また勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
中学のクラス数
-
ヒグマを撃退
-
配列の重複する値とその個数を...
-
ベクターワークスでの【クラス...
-
クラスの行数は?
-
UMLのクラス図はmain()も含むん...
-
C# テキストボックスにマウスが...
-
数学の計算問題。 3年間同じク...
-
eclipsで新規javaクラスを作成...
-
スキャンディスクすると不良セ...
-
Sub-LVDS規格とは
-
同一パッケージにあるクラスが...
-
コンボボックスのマウスホイー...
-
JAVAでMath.powを使用せずに、...
-
main()を持つクラスが2つ以上...
-
標準モジュールとクラスモジュ...
-
Cstring(日本語含む)をcharに...
-
僕の出身中学校は200人同級生が...
-
日本では評価をする際、満点を1...
-
A・B・Cクラスとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java eclipse 型に解決できません
-
どこからも呼ばれていない無意...
-
EclipseでJSPのコンパイルエラー
-
そんなにお金がなくても年に1度...
-
複数のクラスで共通した関数を...
-
dllと同じプロジェクトにする方法
-
恋愛
-
UMLのクラス図はmain()も含むん...
-
僕の出身中学校は200人同級生が...
-
配列の重複する値とその個数を...
-
同一パッケージにあるクラスが...
-
IPアドレスの3バイト目の呼び方
-
標準モジュールとクラスモジュ...
-
main()を持つクラスが2つ以上...
-
eclipse でクラスに色
-
共通で使う関数を集めたクラス...
-
VBAもしくはVB6:クラスの中で...
-
Cstring(日本語含む)をcharに...
-
IPアドレスのクラスAを取得して...
-
コンボボックスのマウスホイー...
おすすめ情報