@Hollib

Что значит Set в языке VBA?

Дайте пожалуйста понятный ответ

Dim example As Range
Set example = Range("A1:C4")

example.Rows(3).Select

В этом коде вторая строка. Что делает и как переводиться слово Set ?
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Знак присвоения без SET присваивает скалярное значение. А с SET - ссылку на объект. То есть использовать его или нет - зависит от типа значения справа от знака присвоения. Ну и желаемого результата, конечно (включая и желание не получить ошибку несоответствия типов).

Пример.

  • Откройте Excel.
  • Откройте окно редактора VBA (Ctrl-F11). Измените размеры окон так, чтобы видеть и таблицу, и редактор.
  • В редакторе добавьте модуль (Insert-Module).
  • Вставьте в модуль следующий текст:
    Sub test()
    Dim x, y
    Range("A1").Value = 123
    x = Range("A1")
    Set y = Range("A1")
    End Sub

  • Поставьте курсор в середину модуля, и начните пошаговое выполнение нажатием F8. Доведите исполнение до финального End Sub (когда эта строка будет подсвечена жёлтым цветом).
  • Откройте окно локальных переменных (View - Locals Window).

Вы увидите, что первый оператор присвоения присвоил переменной x скалярное значение. Поскольку справа был объект, то в качестве скалярного значения было взято свойство объекта по умолчанию. Для объекта типа Range объектом по умолчанию является его свойство .Value - посему в переменную помещено значение 123. И соответственно переменная имеет тип Variant/Double.

А вот второй оператор присвоения, использующий Set, поместил во вторую переменную y ссылку на объект Range. И переменная имеет тип Variant/Object/Range.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Первая ссылка в поиске.
https://learn.microsoft.com/ru-ru/office/vba/langu...

Назначает ссылку на объект переменной или свойству.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Heaad Москва
от 170 000 до 200 000 ₽
4People Санкт-Петербург
от 130 000 до 230 000 ₽
4People Санкт-Петербург
от 220 000 до 350 000 ₽