マイクロソフトの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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) 初歩的な質問ですがよろしくお願いします。 Excelのユーザーフォームを作成 ユーザーフォーム内から 5 2022/04/06 20:52
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
Access サブフォームでの選択行の取得
その他(データベース)
-
このオブジェクトに値を代入することはできません
その他(データベース)
-
-
4
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
5
フォーム上の全てのコントロールを取得したい
Access(アクセス)
-
6
Access_Formのデザインビュー画面を拡大表示
Access(アクセス)
-
7
クラスモジュールを使わないとできないこと
Access(アクセス)
-
8
FileDialog オブジェクトでファイル名のみを取得
PowerPoint(パワーポイント)
-
9
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
10
access2003 クエリSQL文について
その他(プログラミング・Web制作)
-
11
Accessのハイパーリンクをクリックしてもファイルが開かない
Access(アクセス)
-
12
サブフォームを非表示させる方法を教えて下さい
その他(Microsoft Office)
-
13
Access VBA標準モジュールについてです。
Access(アクセス)
-
14
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
15
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
16
VBAのリストボックスをマウスでスクロール
PowerPoint(パワーポイント)
-
17
他のMDBのテーブルに追加したい
その他(プログラミング・Web制作)
-
18
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
19
実行時エラー3131 FROM 句の構文エラーです について
Access(アクセス)
-
20
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
内部クラスを別ファイルに
-
グローバルIPとプライベートIP...
-
IPアドレスのクラスAを取得して...
-
自作のクラスファイルがインポ...
-
「天声人語」をインターネット...
-
同一パッケージにあるクラスが...
-
java eclipse 型に解決できません
-
重複エラーを解決するには
-
packageとimport の違いって?
-
成人式の後中3のクラスで集まろ...
-
C#で OpenSSLで3DES
-
3年間同じクラスになる確率
-
java swing JLabelの型とは?
-
eclipseのパッケージって何?
-
VBソースからクラス仕様書作成
-
1 つのヘッダファイルに複数の...
-
クラスのプロパティに構造体を...
-
標準コンストラクタについて ...
-
JSPでclassのimport
-
VB.netのコンテナークラスとは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
同一パッケージにあるクラスが...
-
私はクラスLINEにまだ入れてな...
-
老い先短い ジジィ が ふと 思う...
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
数学の計算問題。 3年間同じク...
-
クラス見てから 女の子5人 ネタ...
-
javaのコンパイルができません...
-
1 つのヘッダファイルに複数の...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
おすすめ情報