2011-12-20 10 views
0

私は、ユーザーが関数を入力してからキーボードショートカットを押すと、アクティビティを実装するためのショートキーイベントハンドラを作成しています。Excel evaluate()はオブジェクト[、]を返しますか?

私が理解するように、ExcelApp.Evaluate("myFunc()")は行く方法です。

しかし、私のXLLアドイン内、myFuncというのEvaluate()のに対し、タイプobject[,]を返すだけで、私はobject[,]objectに変換することができますどのような方法があります型オブジェクト

を返しますか?

EDIT:

object myArray = ExcelApp.Evaluate(functioname); 

if (myArray is object[,]) 
{ 
    int height = myArray.GetLength(0); //Does not recognise GetLength, even though it's an object[,] method 

答えて

1

Evaluateが移動するための方法であってもよいし、あるいは、それは正確にあなたが望むものに依存し、ないかもしれません。
アドレスのようなものを実際に評価したい場合は、そうです。
それ以外の場合は、Application.Runがあります。

質問には、Excelの関数はOLE Variantを返します。これは配列を含むものを含む/参照する可能性があります。 Excel側からは、これを処理するのにコードからの労力は必要ありません。

EDIT:

object[,] foo = (object[,])this.Application.WorksheetFunction.Transpose(new object[] {1,2,3,4}); 

MessageBox.Show (foo.GetLength(0).ToString()); // shows 4 
+0

基本的に私は、戻り値の型は、オブジェクト[、]でUDFを実行するだけリターンは「オブジェクト」とタイプ評価したい。.. – mezamorphic

+0

それは 'オブジェクト'を指すobject'を返します[、 ] '。何も問題ない。 – GSerg

+0

しかし、myObject.GetLength(0)(範囲の境界線)を呼び出すと、myObjectがオブジェクトとして表示されるため、GetLengthというメンバ関数を認識しませんか? – mezamorphic

関連する問題