プロが教える店舗&オフィスのセキュリティ対策術

職場のエクセルファイルに以下のようなコードがあります。
これはブック内の○○というマクロを実行するという意味でしょうか?
(実際は~~部分に多くのコードがあり、上記のことが正しいのかよくわかりません)
Sub test()
~~
Application.Run "ThisWorkbook.○○"
~~
End Sub
以上、よろしくお願いします。

A 回答 (3件)

こんにちは。



こういうのは、ほとんど、みなさん、見よう見まねだと思いますし、分からずに使っているものだと思います。以下を見ても区別は付かないと思いますが、基本的には、自ブック(ThisWorkbook)に対して、「Application.Run "ThisWorkbook.○○"」このようなコードは書きません。

Call がよいとか、どうかは、その状況によります。ただ、基本ですと、Excelの場合は、標準モジュールから、ThisWorkbook のコードは呼び出すことはありません。必要なら、両方とも、標準モジュールに書き込みます。ThisWorkbookは、ローカルオブジェクトを持っていますから、特別な働きを持たすコードでなければ、そこに書きません。

プロシージャのTest_A ~ Test_C までの中で、Test_C は、通常、このようには書きません。

同じプロシージャの Test1 ~Test3で、Test1とTest2 は、呼び出し側から、値渡し・参照渡しがコントロールできますが、Call で呼び出した場合は、呼び出される側で値渡し・参照渡しが決められます。

だから、Call を使うことが多いことになろうかと思います。

'-------------------------------------------
'標準モジュール
Sub Test_A()
 
 Call ThisWorkbook.myTest1

End Sub
Sub Test_B()
 
 ThisWorkbook.myTest1

End Sub
Sub Test_C()
 
 Application.Run "ThisWorkbook.myTest1"

End Sub
'-------------------------------------------
'標準モジュール
Sub Test1()
Dim n
 '参照渡し
 ThisWorkbook.myTest2 n
 MsgBox n
End Sub
Sub Test2()
Dim n
 '値渡し
 ThisWorkbook.myTest2 (n)
 MsgBox n
End Sub

Sub Test3()
Dim n
 Call ThisWorkbook.myTest2(n)
 MsgBox n
End Sub

'-------------------------------------------
'ThisWorkbook モジュール
'-------------------------------------------
Sub myTest1()
 MsgBox Time
End Sub
Sub myTest2(arg As Variant)
 '参照渡し(デフォルト)
   arg = Time
End Sub
    • good
    • 1
この回答へのお礼

ご丁寧な解説ありがとうございます。
このコードは、ユーザーフォーム上でも基本的には使用しないのですか?

お礼日時:2009/07/23 05:23

こんにちは。



>このコードは、ユーザーフォーム上でも基本的には使用しないのですか?

このコードというのは、Application.Run のことでしょうか?
同様です。つまり、

多少、状況にも変わってきますが、UserForm から呼び出しする場合にも、基本的には、呼び出される方のプログラムは、標準モジュールにプログラムコードを置き、

 Call プロシージャ名

とします。
状況が変わるという意味は、UserForm 上に置くことがあります。
それでも、Application.Runは使いません。
    • good
    • 1
この回答へのお礼

度々のご回答ありがとうございました。

お礼日時:2009/07/23 21:58

こんなところへ質問する前に。

Googleででも「VBA Application.Run」で照会すれば、沢山記事が出ます。
検索では、「VBA」を前に添えたほうが良い。他の言語にも有るようだから。
じっくり数個の記事を読むこと。
http://officetanaka.net/excel/vba/tips/tips09.htm
など。
「他ブック」がキーワード。
    • good
    • 0

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

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


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