[[20140812092501]] 『Application.Runで返り値の取得はできませんか?』(ろでます) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Application.Runで返り値の取得はできませんか?』(ろでます)

いつもお世話になっております。ろでますと申します。
早速で申し訳ございませんが、ご質問内容を記載させていただきます。

VBAで別ブックのマクロをApplication.Runで起動させているのですが、このApplication.Runから返り値を取得することはできないでしょうか?

どういうことかと申し上げますと、AppliCation.Runで走らせた側のマクロでエラー等が発生した場合、返り値でたとえば

失敗=1

成功している場合は

失敗=0

のような返り値を取得できれば、呼び出した方のマクロがで、

if 失敗= 1 then

   exit sub
end if
という形で、呼び出した方のマクロを停止したいと考えているためです。
おそらく、呼び出される側がFunctionならば返り値取得は可能かとも私的に思うのですが(間違っていたらすいません)すでに、Subで大量にマクロを作ってしまった後なので、そこを触りたくないとは思っています。

ブック全体や他ブックも含めて参照できる引数などがあればそれでも可能かとも思ったのですが、そういう引数宣言のやり方もいろいろ調べてはみたのですが、見つけることができませんでした。

何とかできる方法はありませんでしょうか。
ご存知の方いらっしゃいましたらご教授をお願い申し上げます。

< 使用 Excel:unknown、使用 OS:unknown >


 Sub aaaa()
    マクロ名 = "呼び出しマクロ"
    ans = Application.Run(マクロ名, 5)
    MsgBox ans
 End Sub

 Function 呼び出しマクロ(数字)
    呼び出しマクロ = 数字 * 6
 End Function

 Sub bbbb()
   引数 = 8
   BKpas = ThisWorkbook.Path & "\Book1.xls"
   マクロ名 = "'" & BKpas & "'!呼び出しマクロ"
   ans = Application.Run(マクロ名, 引数)
   MsgBox ans
 End Sub

(BJ) 2014/08/12(火) 10:50


コメントどうもありがとうございます。
内容からすると、やはり呼び出される方はFunctionではないと駄目なんですね。

お昼に試をしてみたのですが、Application.Runは、マクロ名の後に入れる引数は必須みたいですね。
私としては引数は必要ないのに入れないといけないのも・・・エクセルの仕様でしょうか・・・。
(ろでます) 2014/08/12(火) 13:06


 >私としては引数は必要ないのに入れないといけないのも

 入れたくなきゃ入れなければいいです。
 後で、引数の場合は?とかいわれるのが面倒なので・・・。
 そのあたりはご自分で確認された方が。
 BJ

コメントありがとうございます!
できました!

ありがとうございます。
Boolean 型でsubをFuntionにすると、呼び出された方が失敗時、自動的にFalseが入ってくれるようなので、わざわざ呼び出された側で失敗時に引数をわざわざ設定する必要もなくなりました!(成功時だけTrueを入れれば呼び出す側で簡単に成功かどうかを判断できるようになりました)

> 入れたくなきゃ入れなければいいです。
> 後で、引数の場合は?とかいわれるのが面倒なので・・・。

すいません、以前同じことを試していたとき、「引数が必要です」というエラーが出てきたので、てっきりApplication.runには必ず引数を入れる必要があると私が思い込んでしまっていました。

おっしゃる通り引数なしでもうまく動作してくれました。
誠にありがとうございました。
(ろでます) 2014/08/12(火) 16:56


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.