Приветствую! Объявляется конкурс на лучшее название этой темы
Есть много разных самописных процедур для работы со значениями: очистка, взятие из разделителей, удаление символов слева/справа и так далее. Часто бывает нужно обработать заданный диапазон какой-то из таких процедур и приходится писать цикл по областям, взятие в массив и далее цикл по столбцам и строкам массива с передачей arr(r, c) в такую процедуру
Это всё понятно, но неудобно — хотелось бы иметь что-то такое:
Код
Sub CallSubForRange(rng As Range, SubName$)
Dim arr, aOne(1 To 1, 1 To 1)
Dim a&, r&, c&
For a = 1 To rng.Areas.Count
arr = rng.Areas(a).Value
If Not IsArray(arr) Then aOne(1, 1) = arr: arr = aOne
For c = 1 To UBound(arr, 2)
For r = 1 To UBound(arr, 1)
SubName arr(r, c)
Next r
Next c
Next a
End Sub
'====================================================================================================
Sub MyTrim(v)
v = WorksheetFunction.Trim(v)
End Sub
Вопрос — можно ли это сделать БЕЗApplication.Run "MacroName" и как?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Вариантов для CallBack функций в VBA, кроме Application.Run, немного. Можно поместить все функции для обработки данных в модуль класса и вызывать их по имени через CallByName.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: Через класс будет быстрее в разы, чем через Application.Run
но медленнее, чем писать для каждой функции вариант с диапазоном Просто не хочется переделывать логику - сейчас эти функции уже очень много где вызываются. Наверное, можно просто оставить старые и сделать их копии на классах… Я подумаю и буду благодарен за пример на классах — для обучения и развития
Цитата
bedvit: можно передавать адрес/указатель функции, но это api-шаманство
а вот это уже очень интересно — покажешь? Насколько сложно?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄