Почему я не могу передать этот диапазон как переменную?

Учитывая это заявление:

Dim myRange As Range Set myRange = Sheets("Dashboard").Range("$J$3:$K$9") 

Почему это не работает?

 mySub (myRange) 

Да, это так?

 mySub (Sheets("Dashboard").Range("$J$3:$K$9")) 

Когда я пытаюсь передать myRange я просто получаю Run-time error '424': Object required

Брось парнов.

 mySub myRangePassedByReference 

Включив аргумент в круглые скобки, вы принудительно передаете его ByVal :

 mySub (myRangePassedByValue) 

… даже если mySub принимает параметр ByRef , неявно или явно ( ByRef является значением по умолчанию, если не указан модификатор).


Как было предложено в комментариях, вы можете добавить ключевое слово Call перед собой, но обратите внимание, что Call был устаревшим около 20 лет, поэтому не делайте этого.

Interesting Posts

Ошибка выдачи Excel VBA

Попытка выталкивать элементы в наблюдаемом массиве после чтения из файла Excel, но не все данные толкаются

Excel Solver Поиск целевой суммы из подмножества номеров

Картина графика в Excel: условные метки

Формула Excel для копирования данных строк в данные столбца и сортировки по убыванию

apache POI читает текстовый столбец как числовой

Выберите top-n строк в таблице после фильтра с помощью VBA

Строка в String, путем поиска каждого вхождения определенного текста и фильтрации в другие ячейки

Как извлечь альт-значение из изображения с помощью vba

Динамически выбирать все данные при создании сводной таблицы

Отправлять все текущие выходные данные буфера клиенту и переходить на другую страницу

Копирование X-го листа из книг N Excel в новую книгу – какой язык использовать?

Массив соответствия множеству критериев с начальным / конечным диапазоном

Условное форматирование скрывает текст

Скрытие ленты Excel с помощью VB.net

Давайте будем гением компьютера.