2016-11-16 8 views
0

は、私は、次の機能を有していると言う:VBAの式から引数を読み取るにはどうすればよいですか?

関数MyFunctionをセルA1にこの関数を呼び出すストリング

として(整数、文字列、オプションBとしてA):

= MyFunction( "Hello"、 "15")

この関数の引数に別のルーティンからアクセスしたいA1のセルの内容を読み出すことにより、NE:

範囲(「A1」)の式をセルに入力されたように、式

これはしかし、文字列として引数で全体式を返します。 。簡単に引数( "こんにちは"と15)を抽出する方法はありますか?私は厄介なテキスト操作のルートを避けようとしています。

+0

あなたは不格好なテキスト操作とはどういう意味ですか?それには、検索や置換などの機能の使用も含まれますか? – Hrothgar

+0

なぜ別の関数の引数にアクセスする必要がありますか?私は、これを行うためのより洗練された方法があると思います - それらをMyFunctionでキャッシュすることです。 – Comintern

答えて

1

引数がすべて範囲の場合は、Precedentsプロパティを使用して引数を取得できます。

これが当てはまらない場合は、恐れ入りますが、私はあなたが持っているテキスト操作を恐れています。特定の関数を(関数の代わりに)解析するだけであれば、それほど悪くはありません。イミディエイトウィンドウから

Function MyFunc(ar1, ar2) 

    MyFunc = 1 

End Function 

Public Sub ReadMyFunc(rng As Range) 

    Dim vaArgs As Variant 

    vaArgs = Split(Split(Left(rng.Formula, Len(rng.Formula) - 1), "MyFunc(")(1), ",") 

    Debug.Print "First arg is: " & vaArgs(0) & vbNewLine & "Second arg is: " & vaArgs(1) 

End Sub 

結果

?activecell.Formula 
=MyFunc(A1,"1") 
readmyfunc activecell 
First arg is: A1 
Second arg is: "1" 
+0

これはトリックでした。ありがとうございました。 – NamSandStorm

関連する問題