Как заставить Excel UDF возвращать реальную дату вместо обычного или двойного? - PullRequest
3 голосов
/ 22 ноября 2011

Привет! Я создал UDF Excel, который возвращает массив строк, дат и целых чисел.Однако Excel преобразует мои значения даты и времени в двойные, и поэтому мне приходится вручную выбирать значения и преобразовывать их в короткие даты в Excel.Если я конвертирую дату в строку в моем коде c #, Excel распознает ее как общую, поэтому я не могу получить значение для этой ячейки.Есть ли обходной путь для этого?

Заранее спасибо!

1 Ответ

1 голос
/ 22 ноября 2011

Как вы заметили, в Excel нет внутреннего представления значений в виде даты / времени - даты просто удваиваются с применением другого форматирования.Некоторые встроенные функции, такие как =TODAY(), специально встроены в Excel и автоматически применяют форматирование даты.В Excel нет механизма для пользовательских функций, позволяющих использовать это специальное поведение.

Один из способов, хотя я бы не предложил, - это запустить макрос, который изменяет форматирование вызывающих ячеек после вычислениязавершено.Вы сохраняете, какие ячейки должны быть переформатированы (на основе Application.Caller / xlfCaller), и запускаете макрос, который изменяет форматы ячеек - либо из обработчика событий вычисления, либо по расписанию с помощью Application.OnTime.

Это довольно уродливо.

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