Страницы: 1
RSS
Как применить процедуру для каждой ячейки диапазона без прямого цикла, How to call Subroutine for each cell in Range without visible cycle
 
Приветствую!
Объявляется конкурс на лучшее название этой темы  :D

Есть много разных самописных процедур для работы со значениями: очистка, взятие из разделителей, удаление символов слева/справа и так далее.
Часто бывает нужно обработать заданный диапазон какой-то из таких процедур и приходится писать цикл по областям, взятие в массив и далее цикл по столбцам и строкам массива с передачей arr(r, c) в такую процедуру
Это всё понятно, но неудобно — хотелось бы иметь что-то такое:
Вопрос — можно ли это сделать БЕЗ Application.Run "MacroName" и как?
Изменено: Jack Famous - 14.04.2022 09:33:13
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Вариантов для CallBack функций в VBA, кроме Application.Run, немного. Можно поместить все функции для обработки данных в модуль класса и вызывать их по имени через CallByName.
Изменено: sokol92 - 14.04.2022 17:22:19
Владимир
 
sokol92, приветствую и спасибо!  :idea:
Неплохо — даже не думал в эту сторону, потому что классы не использую  :D
Но хотелось бы без классов…  :(
Изменено: Jack Famous - 14.04.2022 17:41:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
потому что классы не использую
зря. Через класс будет быстрее в разы, чем через Application.Run
Думаю еще можно передавать адрес/указатель функции, но это api-шаманство.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, приветствую и также спасибо!  :idea:
Цитата
bedvit: Через класс будет быстрее в разы, чем через Application.Run
но медленнее, чем писать для каждой функции вариант с диапазоном  :)
Просто не хочется переделывать логику - сейчас эти функции уже очень много где вызываются. Наверное, можно просто оставить старые и сделать их копии на классах… Я подумаю и буду благодарен за пример на классах — для обучения и развития  :idea:
Цитата
bedvit: можно передавать адрес/указатель функции, но это api-шаманство
а вот это уже очень интересно — покажешь? Насколько сложно?
Изменено: Jack Famous - 14.04.2022 20:38:42
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Насколько сложно?
Проще и без костылей сделать ксвой класс.
Но если хочешь, можешь почитать.
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх