よろしくお願いします。
標準モジュール(例、TestModule())からClassモジュール(Class1)を呼び出し、
呼び出すClass1で別のクラス(Class2)を呼び出して使いたい場合、
どのような記述を行えばよいのか、ご教授いただけないでしょうか。
標準モジュールから他の標準モジュールを呼び出す場合、
call Module
で呼び出すということは知っていますが、同じようにCallで
Classで別のクラスを呼び出すことは可能なのでしょうか?
自分なりに色々調べはしましたが不十分なせいもあるのでしょうが
方法が見当たりませんでした。
よろしくお願いします。
環境)Windows10、Office365 solo(Office2016)Excel
A 回答 (2件)
- 最新から表示
- 回答順に表示
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)
-
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
FriendとPublicの違い。。。
Visual Basic(VBA)
-
6
関数の引数にクラスを使いたい
Visual Basic(VBA)
-
7
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
8
他のモジュールのプロシージャの呼び出したい。
Visual Basic(VBA)
-
9
戻り値がクラスオブジェクト
Visual Basic(VBA)
-
10
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
11
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
12
DoEventsがやはり分からない
Visual Basic(VBA)
-
13
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
14
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
15
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
16
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
17
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
18
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
19
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
20
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンポーネント指向って、どの...
-
共通モジュールでDBへの接続と...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
VBAで、Functionを、クラスモジュール...
-
[VBA] Classから他のClassを呼...
-
VB ブラウザ
-
他のモジュールのプロシージャ...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームを表示中にシ...
-
【C#/Java?】try-catchでcatch...
-
エクセルエラー13型が一致しま...
-
ExcelVBAのユーザーフォームの...
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
-
eclipseのデバッグ中に変数の値...
-
ユーザーフォームに別シートか...
-
実行時エラー 438になった時の...
-
クリックイベントなのに、2回ク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
用語の意味の違いを教えてくだ...
-
他のモジュールのプロシージャ...
-
VB.netで、動的な型変換を行い...
-
WPFでCanvas の子要素にアクセ...
-
VB.NETにて文字列で指定した関...
-
【JSF】バッキングビーンから別...
-
バウンドプロパティとは?
-
VBAで、Functionを、クラスモジュール...
-
VBA オブジェクト追加
-
Form2の変数をForm1に渡す方法...
-
コンポーネント指向って、どの...
-
VBA クラスにプロパティが実装...
-
シーケンス図について。
-
VBA モジュールレベル・パブリ...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
おすすめ情報