よろしくお願いします。
標準モジュール(例、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)
-
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
関数の引数にクラスを使いたい
Visual Basic(VBA)
-
5
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
戻り値がクラスオブジェクト
Visual Basic(VBA)
-
8
どこにもフォーカスを当てたくない
Access(アクセス)
-
9
VBA コレクションに2次元配列を追加して取り出す方法
Visual Basic(VBA)
-
10
エクセルVBA クラスモジュール内でパブリックユーザ定義型
Visual Basic(VBA)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
FriendとPublicの違い。。。
Visual Basic(VBA)
-
13
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
14
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
15
DATE型変数を初期化する方法
Visual Basic(VBA)
-
16
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
17
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
18
他のモジュールのプロシージャの呼び出したい。
Visual Basic(VBA)
-
19
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
20
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
VBA シートのボタン名を変更し...
-
パソコンへの「Dropbox...
-
実行時エラー 438になった時の...
-
ユーザーフォームのテキストボ...
-
ユーザーフォームを表示中にシ...
-
カメラスクロールするのを動画...
-
worksheetFunctionクラスのVloo...
-
VBA(エクセル)で自動的にボタン...
-
「Columns("A:C")」の列文字を...
-
エクセルエラー13型が一致しま...
-
ボタンをマウスで押し続けたと...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
テキストボックス(VBA)でEnter...
-
コントロールを移動できない
-
VBAがブレークモードになっ...
-
ウォッチ式の文字数制限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
他のモジュールのプロシージャ...
-
用語の意味の違いを教えてくだ...
-
VB.netで、動的な型変換を行い...
-
宣言とは違うオブジェクトを作...
-
コンポーネント指向って、どの...
-
【JSF】バッキングビーンから別...
-
WPFでCanvas の子要素にアクセ...
-
VBA モジュールレベル・パブリ...
-
VB.NETにて文字列で指定した関...
-
VBAで、Functionを、クラスモジュール...
-
コンストラクタとデリゲートの...
-
Form2の変数をForm1に渡す方法...
-
Windows8でのTomcatの自己アドレス
-
ユーザーコントロールのメソッ...
-
リフレクションはどういったも...
-
Python クラスとモジュールの...
-
VB6で外部から静的アクセスが可...
おすすめ情報