
よろしくお願いします。
標準モジュール(例、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAもしくはVB6:クラスの中でクラスは使える?
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
5
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
6
collection型を引数にしたファンクションでコンパイルエラー
Visual Basic(VBA)
-
7
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
8
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
9
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
10
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
-
11
Excel VBA 定数にオブジェクトを指定したい
Visual Basic(VBA)
-
12
VBのReturnの使い方
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
15
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
16
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
17
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
18
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
19
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
20
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VBA] Classから他のClassを呼...
-
C#でのWebRequestでのPOSTについて
-
共通モジュールでDBへの接続と...
-
他のモジュールのプロシージャ...
-
コンポーネント指向って、どの...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
VBAがブレークモードになっ...
-
ユーザーフォームを表示中にシ...
-
VBA ユーザーフォームの Keypre...
-
VBA(エクセル)で自動的にボタン...
-
エクセルの画像にツールチップ...
-
ユーザーフォーム上に現在日時...
-
エクセルのVBAの標準モジュール...
-
パソコンへの「Dropbox...
-
【C#/Java?】try-catchでcatch...
-
VBAで既に開いている別アプリケ...
-
実行時エラー48発生時のDLL特定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
他のモジュールのプロシージャ...
-
VB.netで、動的な型変換を行い...
-
Excel vbaで複数のテキストボッ...
-
現在使用しているJAVAファイル...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
VisualBasicへの取っ付き辛さ。...
-
VB.NETにて文字列で指定した関...
-
Visual-C#の event キーワー...
-
Python クラスとモジュールの...
-
Android / 型変数へのバインド?
-
【iOS】TextFieldでテキスト入...
-
Form1に記述されたスクリプトを...
-
C# Process.Start で標準入力
-
ExcelVBAでJavaのHashtableのよ...
-
VBA クラスにプロパティが実装...
-
VBAで、Functionを、クラスモジュール...
-
シーケンス図について。
おすすめ情報