No.1
- 回答日時:
標準モジュールもクラスの1種ですが、任意のタイミングでインスタンスの生成/破棄ができない点、複数のインスタンスを生成できない ( = 常に一つしか存在しないことが保障されている) 点が異なります。
つまり、標準モジュールはデザインパターンで言うところのシングルトンに相当する機能を提供するものと言えます。
詳細はこちら↓を熟読するとよいでしょう。
http://homepage1.nifty.com/CavalierLab/lab/vb/cl …
やや古い (1998~99年頃?) 内容ですが、参考になるはと思います。
# この記事を書いた当時、執筆者は高校生ぐらい?だったはず。
# 現在はどうされているのでしょうか......?
参考URL:http://homepage1.nifty.com/CavalierLab/lab/vb/cl …
No.2ベストアンサー
- 回答日時:
端的かつ正確に言うと、クラスはオブジェクトで、標準モジュール(質問内でモジュールと呼んでいるのは標準モジュールのことだと思いますが)はオブジェクトではありません。
(もし、質問内でモジュールと呼んでいるのが、本当にモジュールという意味で言っているのであれば、クラスはクラスモジュールですし、フォームはフォームモジュールです。クラスはモジュールの一種です、という答えです)
使用方法で言うと、クラスはインスタンス作成時、破棄時にそれぞれイベントが発生するため、変数等の初期化や終了処理などをオブジェクト内で自動化できます。
オブジェクト内で自動化されるため、初期化手続き、参照の開放などクラスを使用する際には内部の動作を意識することなく使用することができます。
つまり、再利用性が高いと言いかえることができます。
また、VB5/6ではAddressOf演算子が標準モジュール内の関数以外には使用できないという制限があるが、それを使用しない前提では、標準モジュールで実現できることはクラスで書きかえることができます。
逆に、クラスではできる事でも、標準モジュールではできないことは山のようにあります。
#1さんが書いたように、複数のインスタンスを作成することもそうですが、当方の利用方法では、コレクションに追加できるという点を挙げたいと思います。他には、自己再起定義(造語)です。ClassA内でClassAオブジェクトを作成するような動作です。ClassA内でClassAを定義した場合、中に作成されたClassAの中にさらにClassAが定義可能で、さらにその内部にClassAが、さらにその内部に・・・と、スタックの許す限り無限に定義されます。
ポリモーフィズム、関数の引数や返り値にクラスを渡すなど、いろいろと標準モジュールには不可能な点が多くあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ガスコンロ・IHクッキングヒーター・給湯器 シャープ製品JH-WB1821 と BCGシャープ共同開発品JH-WB182E の違いについて 1 2023/05/06 20:06
- 経営情報システム 製造業です。モジュール化の意味がよく分かりません。モジュール化ができていないとどんな不具合があります 4 2022/07/26 06:55
- 建設業・製造業 製造業です。モジュール化の意味がよく分かりません。モジュール化ができていないとどんな不具合等がありま 2 2022/07/25 22:42
- ルーター・ネットワーク機器 PCをWI-FI化(現在は有線) 9 2023/01/16 08:20
- 一眼レフカメラ SFP モジュールについて 1 2023/06/04 14:54
- Java 日本語 なぜならモジュールの多くは開発途上にあり、その充実を持つ余地が多分にあるからである。 意味を 3 2022/09/09 20:41
- バッテリー・充電器・電池 AC-DC電源モジュールの選択について教えてください 3 2022/04/24 11:44
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
CloseとDisposeの違い
Visual Basic(VBA)
-
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
-
4
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
5
VBのフォームモジュールと標準モジュールの使い分け
Visual Basic(VBA)
-
6
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
7
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
8
FriendとPublicの違い。。。
Visual Basic(VBA)
-
9
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
10
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
11
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
-
12
DoEventsがやはり分からない
Visual Basic(VBA)
-
13
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
14
VB.NETで、DLLを頂いたんですが・・
Visual Basic(VBA)
-
15
DBから取得した値を配列へ代入する
Visual Basic(VBA)
-
16
VBの「As String * 128」とは?
Visual Basic(VBA)
-
17
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
18
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
19
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
20
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
VBAからpythonへの転向について
-
VBA モジュールで共通に使う変...
-
エクセルVBAでシートモジュール...
-
Apache2 静的・動的モジュール...
-
Excel VBA 定義されたプロージ...
-
Excel VBAで、ユーザーフォーム...
-
グラフのX,Y座標を取得したい
-
Excelで時刻になったら知らせて...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBA 『Call』で呼び出す...
-
標準モジュールにpublicで宣言...
-
マクロについて教えてください。
-
モジュールの独立性について
-
C#のアプリケを64bit版のOSで起...
-
ArduinoのジャイロモジュールMP...
-
フォームがアクティブになった...
-
Excel VBAでリンク切れをチェッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
モジュールとは何ですか
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
VBAで旧字体を異字体に一括で変...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBAで、ユーザーフォーム...
-
Form間の値の渡し方
-
モジュールとクラスの違いって...
-
Access VBA標準モジュールにつ...
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
おすすめ情報