Рассмотрим пример этой таблицы, но мне нужно общее решение для работы в качестве надстройки VSTO Excel.Сообщите, когда формула обновляет ячейку Excel
- A1: содержит номер .
- B1: содержит функцию
=(A1*3)
, которая отображает .
При внесении изменений в А1, я хочу, чтобы получить уведомление об этом и обновлении получающейся формулы в B1.
Использование VSTO, я могу разорвать событие Application.SheetChange, которое предоставляет диапазон, представляющий A1, но я не получаю уведомление о том, что отображаемое значение B1 также изменилось. Я обнаружил событие Application.SheetCalculate, но у него нет полезных аргументов.
Application.SheetChange += (sheet, range) => Debug.WriteLine($"Column: {range.Column}, Row: {range.Row}");
Application.SheetCalculate += sh =>
{
var sheet = sh as Excel.Worksheet;
Debug.WriteLine($"Sheet: {sheet.Name}"); // need a Range
};
В абстрактной реализации, возможно, чтобы получить уведомление, когда ячейка, содержащая функцию (B1 выше) обновляет представленное значение?
Чтобы обнаружить изменения, вам необходимо сохранить значения интересующей ячейки (я) и проверить наличие обновлений при возникновении события «SheetCalculate». –
Проблема в том, что я не буду знать, какие ячейки имеют формулы раньше времени. Надстройка должна работать над неизвестной книгой, а список изменяется на ячейки значений, а также на ячейки, рассчитанные по формуле. –
Вы хотите получить уведомление, если пересчет не изменит результат? –