Добрый день. Помогите пожалуйста оптимизировать код функции. Описание и пример в приложении. Заранее благодарен.
оптимизация алгоритма функции VBA
15.07.2011 14:12:36
|
|
|
|
15.07.2011 15:47:00
А зачем VBA-функция нужна?
С этим легко и формулы справятся: =СУММ(Лист2:Лист6!I8) Только листы добавляйте МЕЖДУ существующих листов (Лист2 и Лист6) Ну или создайте 2 пустых листа (первый и последний), и в формуле укажите их названия. Пример в файле: |
|
|
|
15.07.2011 15:49:13
Теперь эти листы (с именами НАЧАЛО и КОНЕЦ) можно скрыть - и добавлять новые листы даже после последнего видимого листа.
Формулы будут считать корректно (и быстрее, чем ваша UDF) Пример в файле: |
|
|
|
15.07.2011 16:26:44
{quote}{login=EducatedFool}{date=15.07.2011 03:49}{thema=}{post}Теперь эти листы (с именами НАЧАЛО и КОНЕЦ) можно скрыть - и добавлять новые листы даже после последнего видимого листа.
Формулы будут считать корректно (и быстрее, чем ваша UDF) Пример в файле: Всё гениальное - просто :) Спасибо. Не знал что так можно сделать. Попробовал, работает. :) |
|
|
|
15.07.2011 17:24:41
Эх ..., а выбрасывать жалко:
|
|
|
|
16.07.2011 10:04:56
файл
|
|
|
|
16.07.2011 13:33:17
соглашусь, с EducatedFool - зачем изобретать велосипед)
Если исходить из макроса автора темы, то я бы сделал так (при условии, что суммируются только целые числа (результат в пределах от -32768 до +32767), и с первого листа нет нужды брать данные): Public Function SumOfSheets%(ByRef objCell As Object) Dim objSheet As Object For Each objSheet In Worksheets If Not objSheet Is ActiveSheet Then SumOfSheets = SumOfSheets + objSheet.Range(objCell.Address) End If Next End Function
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
16.07.2011 14:13:32
nerv, так Вы против "изобретения велосипеда" или за (если предлагаете свой вариант) ?
{quote}{login=EducatedFool}{date=15.07.2011 03:47}{thema=}{post}А зачем VBA-функция нужна? С этим легко и формулы справятся: =СУММ(Лист2:Лист6!I8) Пример в файле: |
|
|
|
16.07.2011 16:35:09
Попробую прояснить: в целом против) Но если все-таки автор (темы) хочет макрос, то (как вариант) выше.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
16.07.2011 16:40:29
С другой стороны, я считаю, что в целях развития, иной раз, бывает полезно его изобретать : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук |
|
|
|
16.07.2011 16:48:26
:-)
|
||||
|
|
|||
Читают тему