|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.09.2009, 09:13 | #1 |
Новичок
Джуниор
Регистрация: 23.09.2009
Сообщений: 2
|
Пересчет user defined функций в Excel 2007
У меня такая проблема - создаю документ с несколькими User defined functions. Они используются довольно значительно, т.е. количество ячеек содержащих user defined функции исчисляется тысячами.
К сожалению, иногда - я не могу даже точно сказать, что становится причиной - вдруг часть формул начинает выдавать #ЗНАЧ#. Excel считает, что все посчитано и на F9 не откликается. Если вручную зайти в любую из ячеек со #ЗНАЧ#, и нажать ВВОД, она пересчитывается и появляется нормальное искомое значение (не ошибка). Мне удается обычно заставить Excel всё таки пересчитать книгу по-настоящему, внеся какие-нибудь серьёзные изменения, например, скопировав большой кусок книги куда-нибудь в соседний лист. Но в любом случае это безумно раздражает и я никак не могу сообразить, что служит причиной. Спасибо большое если кто откликнется. Станислав |
23.09.2009, 09:21 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Может, ошибка в коде одной из UDF?
Выложите пример файла с Вашими UDF, посмотрим. PS: Можно написать простейший макрос (из одной строки) для принудительного пересчёта листа, и вызывать его нажатием горячей клавиши. |
23.09.2009, 15:21 | #3 |
Новичок
Джуниор
Регистрация: 23.09.2009
Сообщений: 2
|
Специалист я не большой по программированию в Excel, если честно, это первая моя процедура. Переводит значение из одной валюты в другую опираясь на несколько именованных диапазонов в Excel:
Function CURRENCYTRANSLATE(Amount As Double, FromCurrency As String, ToCurrency As String, TranslationDate As Date) As Double Dim FromCurrencyNumber As Integer Dim ToCurrencyNumber As Integer Dim BaseCurrency As Integer Dim FromCurrencyRate As Double Dim ToCurrencyRate As Double FromCurrencyNumber = WorksheetFunction.VLookup(FromCurre ncy, Range("CurrencyNumbers"), 2, 0) ToCurrencyNumber = WorksheetFunction.VLookup(ToCurrenc y, Range("CurrencyNumbers"), 2, 0) FromCurrencyRate = WorksheetFunction.VLookup(CLng(Tran slationDate), Range("CurrencyRates"), FromCurrencyNumber, 0) ToCurrencyRate = WorksheetFunction.VLookup(CLng(Tran slationDate), Range("CurrencyRates"), ToCurrencyNumber, 0) CURRENCYTRANSLATE = Round(Amount * FromCurrencyRate / ToCurrencyRate, 2) End Function И по поводу макроса для пересчета - это что-нибудь вроде Worksheet.Recalculate? Спасибо, что откликнулись. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
findObj is not defined | man-1982 | JavaScript, Ajax | 0 | 09.07.2009 20:49 |
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 | kovalevskivf | Microsoft Office Excel | 2 | 15.05.2009 16:47 |
Использование функций Excel | СеВа | Microsoft Office Excel | 0 | 14.03.2008 13:37 |
Excel max 256 строк VS user надо 300 строк | Exo | Microsoft Office Excel | 3 | 10.01.2008 17:14 |
Excel 2007 | WIC | Microsoft Office Excel | 2 | 24.11.2007 00:00 |