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

自作アドインに、byref型で配列を引数にしたプロシージャを作り、別のファイルのプロシージャからそのアドインを呼び出して、アドインのプロシージャで配列に処理をして、その結果を呼び出し元のファイルのプロシージャで使用したいのですが、処理できないようです。
例えば、
アドイン側 myAddin.xla
sub test(byref strAry() as string)
strAry(0)="a":strary(1)="b"
end sub

呼び出し元
sub execute()
dim myAry() as string
redim myAry(1)
application.run macro:="myAddin.xla!test",arg1:=myAry()
msgbox myAry(0) & "-" & myAry(1)
end sub

上記のコーディングをしても、表示されるメッセージは "-" のみです。
アドインの処理はまったく反映されていません。
変数であればアドイン側をFunctionにして戻り値を取得できたのですが、配列ですとうまくいきません。
別のプロジェクトから、配列を返す方法はありませんか?

A 回答 (1件)

どうも Application.Runで実行すると 配列だろうと引数がByValで渡されてしまうようです



アドインブックをExcelのメニューの ツール > アドインでチャックをつけます
VBEでアドインブックのプロジェクト名を
VBAProjectから適当な名前に変更して上書きします
たとえば myAddinProjなどとしておきます

VBEのメニューから ツール > 参照設定 > 参照ボタンで
アドインブックを指定し、OKをクリック

プロシージャの呼び出しを
myAdinProj.Test myArray
といった具合に呼び出してみましょう
    • good
    • 0
この回答へのお礼

うまくいきました。
ありがとうございました。

お礼日時:2008/07/02 12:35

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