
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.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
'****ここまで****
No.3
- 回答日時:
まず、拡張子の違い
標準モジュール(*.bas)、クラスモジュール(*.bas)
次に、呼び出し方法の違い
標準モジュールではPublic変数やプロシージャの名称を記述するだけでしたが、クラスモジュールでは、
クラス名.プロシージャ(変数/プロパティ)
としなければなりません。
さらに、標準モジュールは同一プロジェクトからしか呼び出せませんでしたが、クラスモジュールは、ActiveX DLL/EXEとして、つまり、1つのオブジェクトとして、プロジェクトの外から呼び出すことができるという、大きな特徴があります。
No.2
- 回答日時:
詳しくは正しいか分かりませんが自分はこのように認識しています。
クラスのメリット
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という変数をプロパティとして持てば、
取得のみ可能とか設定のみ可能という風にもできます。
自分の知っているのは以上です。
参考になれば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Excel(エクセル) 初歩的な質問ですがよろしくお願いします。 Excelのユーザーフォームを作成 ユーザーフォーム内から 5 2022/04/06 20:52
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- ルーター・ネットワーク機器 PCをWI-FI化(現在は有線) 9 2023/01/16 08:20
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- 一眼レフカメラ SFP モジュールについて 1 2023/06/04 14:54
- その他(教育・科学・学問) ・モジュール10の歯車の直径ピッチは2.54 ・モジュール20の歯車の直径ピッチは1.27 となる理 3 2022/12/02 13:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA This Workbookモジュール...
-
ユーザー定義関数に#NAME?が返...
-
【vba】フォームに書いてあ...
-
VBのフォームモジュールと標準...
-
Excel VBA 定義されたプロージ...
-
ヘッダー・左メニュー・コンテ...
-
モジュールからフォームのボタ...
-
ベースモジュールって?
-
vba 標準モジュールインポート...
-
モジュールを使わないで画像サ...
-
VBAProjectのモジュ...
-
SendKeysの使い方について
-
VBA ユーザーフォーム Image1 ...
-
PHPのセットアップで躓いていま...
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
配列と互換性のない型の要素に...
-
例外処理のフローチャートの記...
-
perlについての質問
-
掲示板のコメントの中に自動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
VBでグローバル変数を宣言するには
-
vba userFormのSubを標準モジュ...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBA 『Call』で呼び出す...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
モジュールからフォームのボタ...
-
大量の標準モジュールを解放す...
-
acwzlibとは?
-
SendKeysの使い方について
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
VBA モジュールで共通に使う変...
おすすめ情報