よろしくお願いします。
標準モジュール(例、TestModule())からClassモジュール(Class1)を呼び出し、
呼び出すClass1で別のクラス(Class2)を呼び出して使いたい場合、
どのような記述を行えばよいのか、ご教授いただけないでしょうか。
標準モジュールから他の標準モジュールを呼び出す場合、
call Module
で呼び出すということは知っていますが、同じようにCallで
Classで別のクラスを呼び出すことは可能なのでしょうか?
自分なりに色々調べはしましたが不十分なせいもあるのでしょうが
方法が見当たりませんでした。
よろしくお願いします。
環境)Windows10、Office365 solo(Office2016)Excel
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
標準モジュール内のサブプロシージャ内でクラスAを呼ぶ場合
クラスB内のメソッドからクラスAを呼ぶ場合
どちらも同じだと思います。
Sub内あるいはクラスBのメソッド内で
Dim Cls As Object
set Cls=New クラスA
Cls.クラスAの望みのメソッド名
No.1
- 回答日時:
メソッドの呼び出しはcallではなく インスタンス名.メソッド名 のように生成したインスタンス名の後にドット(.)を付けてメソッド名を記述します。
以下のソースを実行してください。
標準モジュール:module1
---------------------------------------
Option Explicit
Public Sub Macro1()
Dim A As Class1 'クラス定義
Set A = New Class1 'インスタンス生成
A.Method1 ("Module1からmethod1を呼び出し")
A.Method2 ("Module1からmethod2を呼び出し")
Set A = Nothing 'インスタンス参照の破棄
End Sub
--------------------------------
クラスモジュール:Class1
-------------------------------------
Option Explicit
' クラスのメソッド
Public Sub Method1(ByVal msg As String)
MsgBox ("Class1:Method1で以下のメッセージを表示" & vbLf & msg)
End Sub
Public Sub Method2(ByVal msg As String)
Dim B As Class2
Set B = New Class2
B.Method1 (msg)
Set B = Nothing
End Sub
----------------------------------------
クラスモジュール:Class2
-----------------------------------------
Option Explicit
Public Sub Method1(ByVal msg As String)
MsgBox ("Class2:Method1で以下のメッセージを表示" & vbLf & msg)
End Sub
------------------------------------------
上記の状態で標準モジュール:module1の
A.Method1 ("Module1からmethod1を呼び出し")
は、Class1のMethod1を呼び出しています。
>標準モジュール(例、TestModule())からClassモジュール(Class1)を呼び出し、
>呼び出すClass1で別のクラス(Class2)を呼び出して使いたい場合、
>どのような記述を行えばよいのか、ご教授いただけないでしょうか。
の回答としては、
標準モジュール:module1の
A.Method2 ("Module1からmethod2を呼び出し")
は、Class1のMethod2を呼び出しています。
そして、クラスモジュール:Class1の
Public Sub Method2(ByVal msg As String)
Dim B As Class2
Set B = New Class2
B.Method1 (msg)
Set B = Nothing
End Sub
は、
Method2はClass2のMethod1を呼び出します。
標準モジュールからあるクラスのメソッドを呼び出す場合も、
あるクラスから他のクラスのメソッドを呼び出す場合も、
1)インスタンスの生成
2)そのインスタンスの後にドット(.)を付加し、メソッドを呼び出す。
というのが、基本的な流れになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 初歩的な質問ですがよろしくお願いします。 Excelのユーザーフォームを作成 ユーザーフォーム内から 5 2022/04/06 20:52
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAもしくはVB6:クラスの中でクラスは使える?
Visual Basic(VBA)
-
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
FriendとPublicの違い。。。
Visual Basic(VBA)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
関数の引数にクラスを使いたい
Visual Basic(VBA)
-
7
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
8
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
9
他のモジュールのプロシージャの呼び出したい。
Visual Basic(VBA)
-
10
戻り値がクラスオブジェクト
Visual Basic(VBA)
-
11
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
12
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
13
DoEventsがやはり分からない
Visual Basic(VBA)
-
14
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
15
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
18
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
19
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
20
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
Excel vbaで複数のテキストボッ...
-
他のモジュールのプロシージャ...
-
VBA モジュールレベル・パブリ...
-
[VBA] Classから他のClassを呼...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
VBA オブジェクト追加
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
VBA(エクセル)で自動的にボタン...
-
エクセルエラー13型が一致しま...
-
「Columns("A:C")」の列文字を...
-
ウォッチ式の文字数制限について
-
エクセルのVBAの標準モジュール...
-
ユーザーフォームに別シートか...
-
eclipseのデバッグ中に変数の値...
-
Form_Load と Form_Activate の...
-
ユーザーフォームで動的(Me.Con...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
他のモジュールのプロシージャ...
-
用語の意味の違いを教えてくだ...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
コンポーネント指向って、どの...
-
WPFでCanvas の子要素にアクセ...
-
C#でのWebRequestでのPOSTについて
-
バウンドプロパティとは?
-
シーケンス図について。
-
VB.NETにて文字列で指定した関...
-
Python クラスとモジュールの...
-
【JSF】バッキングビーンから別...
-
ユーザーコントロールのメソッ...
-
'StructLayout' の仕様について
-
hibernate criteria
-
C# Process.Start で標準入力
-
VB6で外部から静的アクセスが可...
-
VBAで、Functionを、クラスモジュール...
おすすめ情報