2011-12-20 5 views
0

Я пишу обработчик события shortkey для реализации активности, когда пользователь вводит функцию, а затем нажимает сочетание клавиш.Excel оценивает() возвращаемый объект [,]?

Как я понимаю ExcelApp.Evaluate("myFunc()") - это путь.

Однако, в моем XLL Addin, MyFunc возвращает тип object[,] тогда Evaluate() только возвращает тип объекта

Есть ли способ я могу преобразовать 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) (для периметра диапазона), он не распознает функцию-член GetLength, потому что он видит myObject как объект? – mezamorphic

Смежные вопросы