Hollib
@Hollib

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

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

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

example.Rows(3).Select

В этом коде вторая строка. Что делает и как переводиться слово Set ?
  • Вопрос задан
  • 1028 просмотров
Решения вопроса 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...

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

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

Войти через центр авторизации
Похожие вопросы