Страницы: 1
RSS
Пользовательская функция
 
Всем доброго времени суток.  
 
Я написал функцию для расчета Итоговой валюты по заданным курсам (прилагается).  
Внимание, вопрос: можно ли вынести курсы валют (в нижней части) в другую книгу, которая будет лежать на сети?  Возможна ли работа формулы, если эта книга с курсами будет закрыта? Как тогда нужно прописать в формуле источник для массива с этими самыми курсами?  
 
Спасибо всем огромное.  
 
P.S.: в догонку вопросик полегче: что нужно написать в формуле, чтобы она пересчитывалась почаще (или как обычно - при любом вводе в любую ячейку, или хотя бы при нажатии на F9)
 
Проще всего попробовать.  
вырежьте ячейки на которые ссылается формула и вставьте в другую книгу. Местоположение книги значения не имеет. Достаточно того, что другая.  
Но мне кажется, книга должна быть открыта.  
По крайней мере при таком написании фунции. Я имею в виду эти строки:  
Clmn = Application.WorksheetFunction.Match(CurNo, Range("9:9"), 0)  
Set CurNm0 = Range("A10:A12")  
Set CurRat = Range(Cells(10, Clmn), Cells(12, Clmn))  
Я кстати ничего сложного не увидел, зачем пользовательская функция? Средствами экселя должно реализовываться.
 
Причин создания функции несколько (парочка):  
1. Дело в том, что наборов курсов достаточно много. И книг, в которых нужно пересчитывать итоговую валюту, тоже очень много. Поэтому чтобы каждый раз не набирать "=B2+B3*1,5+B4*24" и не вспоминать нужные в данный момент курсы, решил вот это замутить.  
2. Хотел сделать книгу с курсами и положить её на сетевой диск, чтобы у различных пользователей (у которых в personal.xls будет эта функция) всё считалось, и таблицу с курсами можно было обновить один раз и всё.  
 
Собственно, по формуле: "вырежьте ячейки на которые ссылается формула и вставьте в другую книгу." - насколько я знаю, ссылки в модуле VBA, к сожалению, не перепробиваются...  
Я хочу, чтобы именно сам модуль формулы брал данные из удаленной книги.  
 
Пока упростим задачу: делаем ссылки на открытую книгу (откройте одновременно post_31592.xls и Книга1 из архива). Вот почему-то CurNm0 задается нормально, а при CurRat работа прерывается - даже никакой ошибки не пишет. Почему такое может быть?
 
Я несколько переделал функцию, так чтобы ссылок на диапазоны внутри не было. Но при закрытом источнике все равно не работает.
 
ну.. у меня это был первоначальный вариант, от которого я отказался, чтобы в каждой формуле не ссылаться на курсы.  
Но всё равно спасибо - Ваш код подсказал одну очень хорошую мысль, которая очень хорошо работает (мысль прилагается).  
Set CurRat = Workbooks("ExchRates.xls").Worksheets("Лист1").Range("B10:AA12")  -  для курсов задается весь массив с возможными курсами, а уже потом при вычислении берется нужная колонка.  
Как решил проблему с общим доступом к курсам: в папку XLSTART кладется ярлык на файл, который лежит на сети. Файл только для чтения (чтобы эксель не ругался у пользователей) и запускается в скрытом режиме. При необходимости сам файл обновляется.  
Сейчас вот еще формулу в надстройку засуну, чтобы было легче пользоваться и всё...    
Большое спасибо за со-думание :)
 
Как вариант на текущем листе можно создать запрос к внешней таблице с курсами валют и автоматически обновлять данные в макросе открытия книги.
Страницы: 1
Читают тему
Loading...