Установите формулу ячейки Excel в функции C # - PullRequest
2 голосов
/ 03 января 2012

Я создал надстройку автоматизации для Excel, реализованную в виде библиотеки классов C #, которая содержит оболочку UDF. (Я не использую VSTO)

Что я хотел бы сделать в своей UDF

1> получить адрес ячейки, где была введена формула;

2> установить формулу этой ячейки на одну из моих собственных;

Я ужевыполните пункт 1> следующим образом:

  Microsoft.Office.Interop.Excel.Application excelApp = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");

  Microsoft.Office.Interop.Excel.Range target = (Microsoft.Office.Interop.Excel.Range)excelApp.get_Caller(System.Type.Missing);

  string cellAddress = target.get_Address(Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value);

  //Perform some operations based on address

  //Assign a formula to my cell (This does not work !)
  target.Formula ="=SUM(2,2)"

Это должно работать в соответствии с документацией MSDN от здесь .

Что я делаю неправильно?Есть ли другой способ установить формулу ячейки?

Спасибо,

Ответы [ 3 ]

2 голосов
/ 03 января 2012

UDF может только возвращать значение в свою вызывающую ячейку - ему не разрешается переписывать свою собственную формулу (или изменять содержимое любой другой ячейки).Для этого вам нужно создать команду.

1 голос
/ 28 мая 2013

'= SUM (2,2)' совпадает с '2 + 2';

, если вы хотите добавить ячейки, например 'A1' и 'A4', вы должны использовать этот формат '= SUM (A1, A4) '

или вы хотите добавить ячейку из' A1 'в' A4 ', вы должны использовать' = SUM (A1: A4) '.

или весь столбец 'B', '= SUM (B: B)'.

0 голосов
/ 03 января 2012

попробуйте эту цель .set_Value (RangeValueDataType: Type.Missing, значение: "= SUM (2,2)");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...