アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。

標準モジュール(例、TestModule())からClassモジュール(Class1)を呼び出し、
呼び出すClass1で別のクラス(Class2)を呼び出して使いたい場合、
どのような記述を行えばよいのか、ご教授いただけないでしょうか。

標準モジュールから他の標準モジュールを呼び出す場合、
call Module
で呼び出すということは知っていますが、同じようにCallで
Classで別のクラスを呼び出すことは可能なのでしょうか?

自分なりに色々調べはしましたが不十分なせいもあるのでしょうが
方法が見当たりませんでした。

よろしくお願いします。

環境)Windows10、Office365 solo(Office2016)Excel

A 回答 (2件)

標準モジュール内のサブプロシージャ内でクラスAを呼ぶ場合


クラスB内のメソッドからクラスAを呼ぶ場合
どちらも同じだと思います。

Sub内あるいはクラスBのメソッド内で
Dim Cls As Object
set Cls=New クラスA
Cls.クラスAの望みのメソッド名
    • good
    • 1
この回答へのお礼

ご教授いただきありがとうございました。返事が遅れて申し訳ありませんでした。

お礼日時:2016/10/03 23:43

メソッドの呼び出しは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)そのインスタンスの後にドット(.)を付加し、メソッドを呼び出す。
というのが、基本的な流れになります。
    • good
    • 1
この回答へのお礼

返信が遅れて申し訳ありません。
ご教授いただき有難うございました。

お礼日時:2016/10/03 23:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A