Excel / Visual Studio / C #. Как изменить отображаемое имя ячейки, но сохранить формулу - PullRequest
2 голосов
/ 05 января 2010

У меня есть какой-то код:

 void mActiveSheet_Change(Microsoft.Office.Interop.Excel.Range Target)
    {
           if (Target.Cells.Formula.ToString().StartsWith("=FR("))
                   ....
    }

Поэтому, когда кто-то использует мою пользовательскую функцию "= FR", я могу справиться с этим.

Это нормально, но, хотя значение формулы для этой ячейки в порядке, отображаемое значение равно "#NAME?"

Полагаю, это потому, что Excel не распознает, что такое FR.

Есть ли способ, которым я могу изменить отображаемое имя, но не формулу, чтобы я мог получить что-то другое, чем "#NAME?" отображается

Я попробовал Target.Cells.Value2 = "Boo"; но это также меняет формулу

Ответы [ 2 ]

5 голосов
/ 05 января 2010

Я думаю, у тебя это с ног на голову.

Настоящая цель - не скрывать ошибку #NAME?; Цель состоит в том, чтобы создать собственную функцию, которую можно подключить к Excel, как любую другую стандартную функцию, такую ​​как SQRT () или ABS ().

Поиск Google или MSDN для user defined function Excel C# - есть рабочие примеры.

2 голосов
/ 05 января 2010

Вы правы насчет #NAME ?. Это код ошибки Excel, который отображается, когда функция не распознается. Вы не можете подавить это.

Один из «грязных трюков», который может сработать, - скрыть сообщение. Определите цвет фона ячейки и измените цвет шрифта в соответствии с фоном. Если ячейка не выделена (а не только выделена), это, по сути, скрывает #NAME? сообщение об ошибке. После того, как вы обработаете функцию = FR и вернете результат, вы можете сбросить цвет шрифта до того, каким он был раньше, чтобы увидеть ответ.

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