• ベストアンサー

エクセルVBA 「Application.Run」について

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 こういうのは、ほとんど、みなさん、見よう見まねだと思いますし、分からずに使っているものだと思います。以下を見ても区別は付かないと思いますが、基本的には、自ブック(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

taka1012
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >このコードは、ユーザーフォーム上でも基本的には使用しないのですか? このコードというのは、Application.Run のことでしょうか? 同様です。つまり、 多少、状況にも変わってきますが、UserForm から呼び出しする場合にも、基本的には、呼び出される方のプログラムは、標準モジュールにプログラムコードを置き、  Call プロシージャ名 とします。 状況が変わるという意味は、UserForm 上に置くことがあります。 それでも、Application.Runは使いません。

taka1012
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

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

すると、全ての回答が全文表示されます。

関連するQ&A