Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32663 / 76734 ←次へ | 前へ→

【49305】Re:Call と Application.Run の違い
発言  ichinose  - 07/5/30(水) 21:31 -

引用なし
パスワード
   多摩川 さん、Jakaさん、こんばんは。
Runメソッドの便利な点は、Jakaさんの目安箱を見ていただくとして・・・、

>Call は Excel 以外からも呼び出し可,
>Application.Run は Sub, Function, Property の各プロシージャのみを呼び出すExcel限定ってことなのでしょうか?
ん?Runメソッドだって、APIを呼び出すことだって出来ます。

例 新規ブックの標準モジュールに
'===========================================================
Declare Function GetAsyncKeyState Lib _
    "User32.dll" (ByVal vKey As Long) As Long
'===========================================================
Sub test()
  Dim inkey As Long
  Do While Run("GetAsyncKeyState", 40) = 0
   DoEvents
   Loop
  MsgBox "ok"
End Sub

testを実行すると、↓キーが押されると反応し、「ok」と表示されます。

runメソッドは、呼び出しを文字列で指定できる点が利点ですが

文字列であるがゆえにCallステートメントより、処理が遅い と思います。

又、Runメソッドの引数は、全て値渡しですから、
呼び出し先でデータを返すような引数は使えません。

例 新規ブックの標準モジュールに
'===================================================================
Sub main()
  Dim x, y, z
  x = 1
  y = 2
  z = 0
  Call 足し算(x, y, z)
  MsgBox z 'きちんと1+2=3の3を表示します
  z = 0
  Application.Run "足し算", x, y, z
  MsgBox z 'こっちは、0のまま
End Sub
'================================================================
Sub 足し算(ByVal a, ByVal b, ByRef c)
  c = a + b
End Sub


上記のmainを実行してみてください。
5 hits

【49284】Call と Application.Run の違い 多摩川 07/5/30(水) 16:24 質問
【49286】Re:Call と Application.Run の違い Jaka 07/5/30(水) 16:41 発言
【49305】Re:Call と Application.Run の違い ichinose 07/5/30(水) 21:31 発言
【49314】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 9:26 お礼
【49315】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 9:56 質問
【49316】Re:Call と Application.Run の違い ウッシ 07/5/31(木) 10:12 発言
【49319】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 11:04 質問
【49324】Re:Call と Application.Run の違い ウッシ 07/5/31(木) 12:00 発言
【49332】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 13:41 お礼
【49317】Re:Call と Application.Run の違い Jaka 07/5/31(木) 10:13 発言
【49320】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 11:21 質問
【49327】Re:Call と Application.Run の違い Jaka 07/5/31(木) 12:21 発言
【49333】Re:Call と Application.Run の違い 多摩川 07/5/31(木) 13:47 お礼

32663 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free