
よろしくお願いします。
標準モジュール(例、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も見ています
-
VBAもしくはVB6:クラスの中でクラスは使える?
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
collection型を引数にしたファンクションでコンパイルエラー
Visual Basic(VBA)
-
5
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
6
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
7
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
10
戻り値がクラスオブジェクト
Visual Basic(VBA)
-
11
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
12
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
13
関数の引数にクラスを使いたい
Visual Basic(VBA)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
VBのReturnの使い方
Visual Basic(VBA)
-
16
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
17
VBA コレクションに2次元配列を追加して取り出す方法
Visual Basic(VBA)
-
18
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
19
クラスに配列を渡す方法
Visual Basic(VBA)
-
20
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Form2の変数をForm1に渡す方法...
-
オブジェクト指向とは?
-
VBAで、Functionを、クラスモジュール...
-
現在使用しているJAVAファイル...
-
VB.netで、動的な型変換を行い...
-
VB6で外部から静的アクセスが可...
-
【.NET】DataSetについて
-
[VBA] Classから他のClassを呼...
-
VBA(エクセル)で自動的にボタン...
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
実行時エラー -'-2147417848
-
「Columns("A:C")」の列文字を...
-
実行時エラー 438になった時の...
-
ユーザーフォームを表示中にシ...
-
カメラスクロールするのを動画...
-
Excel VBA で End Subのところ...
-
なぜこんな初歩的なVBAのIf文で...
-
セルをマクロのボタンにしたい。
-
パソコンへの「Dropbox...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[VBA] Classから他のClassを呼...
-
共通モジュールでDBへの接続と...
-
他のモジュールのプロシージャ...
-
用語の意味の違いを教えてくだ...
-
VB.netで、動的な型変換を行い...
-
Excel vbaで複数のテキストボッ...
-
VB.NETにて文字列で指定した関...
-
WPFでCanvas の子要素にアクセ...
-
バウンドプロパティとは?
-
VBAで、Functionを、クラスモジュール...
-
VB6で外部から静的アクセスが可...
-
Visual-C#の event キーワー...
-
【JSF】バッキングビーンから別...
-
VBA オブジェクト追加
-
C# Process.Start で標準入力
-
オブジェクト指向とは?
-
【.NET】DataSetについて
-
C#でのWebRequestでのPOSTについて
-
Python クラスとモジュールの...
-
'StructLayout' の仕様について
おすすめ情報