- Excel VBA Set
Excel VBA Set
«Set» — это ключевое слово, используемое в программировании VBA для назначения ссылки на объект или диапазон ячеек, который останется неизменным во всей программе или коде в Excel. VBA Set в основном помогает нам избежать повторного ввода диапазона, который мы должны выбрать при выполнении кода. В Excel «Набор» в основном применяется к рабочим листам / диапазону ячеек на определенном листе.
Синтаксис:
Установить имя объекта / переменную = объект / диапазон
Примечание. Вам необходимо иметь вкладку «Разработчик» на листе Excel.
Если вы не видите вкладку «Разработчик» в Excel, выполните следующие действия:
Шаг 1: Нажмите на опцию файла .
Шаг 2: появляется выпадающий список, нажмите на вкладку « Параметры ».
Шаг 3: После того, как вы нажмете «Параметры», появится диалоговое окно, как показано ниже, и выберите параметр « Настроить ленту» .
Шаг 4: Когда мы перетаскиваем параметры настройки ленты, мы находим параметр для разработчика, нам нужно установить этот флажок, который позволит нам использовать VBA в Excel.
Как использовать набор ключевых слов в VBA?
Ниже приведены различные примеры использования ключевого слова set в Excel VBA.
Вы можете скачать этот шаблон VBA Set Excel здесь — VBA Set Excel Template
Excel VBA Set — Пример # 1
Мы возьмем простой пример ключевого слова Set в Excel VBA. Предположим, мы хотели бы выбрать диапазон и установить его в качестве фиксированного диапазона, чтобы избежать повторения. Ниже приведен диапазон ячеек, содержащий имена:
Чтобы использовать ключевое слово set в Excel VBA, выполните следующие действия:
Шаг 1: Перейдите на вкладку «Разработчик», а затем нажмите на «Visual Basic» с левой стороны (первая опция), как показано ниже.
Как только вы нажмете на него, появится новое окно, как показано ниже:
Вы заметите, что он содержит две вкладки с левой стороны, «Лист1 (Лист1)» и «ThisWorkbook». Единственное отличие состоит в «Sheet1», когда вы хотите выполнить код только для этого конкретного листа, а в «ThisWorkbook» мы можем написать код и выполнить его, который можно применить ко всей книге Excel.
Шаг 2: Дважды щелкните «Лист1 (Лист1)», и вы увидите пустой экран, на котором нам нужно написать код. Сначала объявите подмножество как Sub name и нажмите Enter, и вы увидите подмножество, созданное, как показано ниже:
Код:
Sub setexmp () End Sub
Это способ, которым мы создаем подмножество, и автоматически появляется «End Sub». Это по умолчанию особенность Excel. Если «End Sub» не появляется, код не будет выполнен и выдаст ошибку.
Шаг 3: Теперь мы объявим переменные, которые будут использоваться в коде.
Введите Dim имя переменной и тип переменной. Здесь имя будет похоже на идентификатор диапазона, а тип будет таким, как Integer, Long, String, Range и т. Д.
Код:
Sub setexmp () Dim Rnst As Sub End Sub
Здесь «Rnst» — имя переменной и присваивает (As) ее как функцию Range. Это предупредит систему о том, что будет сделан выбор диапазона.
Шаг 4: Затем введите ключевое слово «Set» и укажите диапазон, используя формат: Set variable = Range («range of cell») .
Код:
Sub setexmp () Dim Rnst в качестве установленного диапазона Rnst = Range ("A2: A11") End Sub
Шаг 5: Мы должны выбрать указанный диапазон строк. Следовательно, введите select как Rnst.Select См. Скриншот ниже:
Код:
Sub setexmp () Dim Rnst в качестве установленного диапазона Rnst = Range ("A2: A11") Rnst.Select End Sub
Шаг 6: Запустите код, нажав F5 или кнопку Run, и посмотрите результат.
Он выберет указанный диапазон от ячеек A2 до A11.
Набор Excel VBA — Пример № 2
Предположим, мы хотим вставить эти ячейки или расположить их в другой ячейке. Мы будем использовать тот же код, что и выше, и добавим код для вставки этих данных в несколько столбцов.
Выполните следующие шаги:
Шаг 1: Теперь мы скопируем диапазон ячеек, который является столбцом имени. Введите copy, т.е. «Rnst.Copy», когда вы набираете «Rnst.», Появляется своего рода выпадающий список. Он содержит различные функции, такие как копирование, вставка и т. Д.
Шаг 2: Вы можете прокрутить вниз и выбрать желаемую функцию, которую хотите выполнить. Здесь просто введите «Копировать», как показано на скриншоте ниже:
Код:
Sub setexmp () Dim Rnst в качестве установленного диапазона Rnst = Range ("A2: A11") Rnst.Select Rnst.Copy End Sub
Шаг 3: Скомпилируйте код, нажав клавишу F8.
Выполнив эту функцию копирования, вы увидите, что в Excel диапазон копируется, и вокруг диапазона ячеек появляются пунктирные линии, как показано ниже:
Шаг 4: Теперь нам нужно вставить эти ячейки, скажем, в соседние столбцы один за другим, поэтому нам нужно использовать функцию цикла «For» и предположить, что нам нужно вставить 5 раз, поэтому мы напечатаем ее, как показано ниже:
Для целых чисел i = от 1 до 5 -> это указывает, сколько раз нам нужно вставить данные. Если 5, то от 1 до 5, в зависимости от того, что вы считаете предпочтительным.
Код:
Sub setexmp () Dim Rnst в качестве заданного диапазона Rnst = Range ("A2: A11") Rnst. Выберите Rnst.Copy для i = 1 - 5 End Sub
Шаг 5: Выберите ячейку, в которую вы хотите вставить этот диапазон ячеек. Предположим, что мы хотим начать вставку из столбца B2, а затем вставка данных должна быть динамической, то есть она должна автоматически выбирать соседние столбцы один за другим, не перекрывая друг друга. Следовательно, синтаксис будет «Ячейка (номер строки, номер столбца) .PasteSpecial».
Ячейки (2, i + 1) .PasteSpecial, Здесь 2-> представляет номер строки, а i + 1 -> представляет номер столбца. i + 1 означает, что первое значение I, объявленное в цикле «For», равно i = 1, следовательно, значение столбца станет 2, оно указывает, что оно начинает вставляться из столбца B. И по мере увеличения значения i оно будет продолжать выбирать соседние столбцы. по одному.
Код:
Sub setexmp () Dim Rnst в качестве заданного диапазона
Шаг 6. Введите « Next i », что означает, что вы увеличиваете значение «i» по одному, чтобы вставка столбца оставалась динамичной.
Код:
Sub setexmp () Dim Rnst в качестве заданного диапазона
Шаг 7: Нажмите «F8», чтобы строка за строкой выполняла код и покажет вам вставку ячейки в соседние столбцы один за другим.
Здесь вы можете увидеть значение i, равное 1, и данные были вставлены в столбец B по желанию.
Шаг 8: Теперь, когда вы снова нажмете «F8», вы увидите, что теперь значение i равно 2. Следовательно, 2 + 1 станет 3, и данные будут вставлены в ячейку (2, 3), то есть значение строки такое же, но столбец номер меняется, как показано на скриншоте ниже:
После того, как повторение цикла завершится, вы увидите, что данные вставлены 5 раз, то есть с счетчика 1 до 5, начинающего вставку из столбца B в столбец F, как показано ниже:
Набор Excel VBA — Пример № 3
Предположим, мы хотели бы показать количество ячеек в этом диапазоне в окне сообщения, появляющемся при нажатии кнопки. Мы возьмем те же данные, как показано ниже.
Также мы запустим код этого примера на новом листе. Следовательно, добавьте новый лист, и в окне VBA он будет выглядеть так:
Мы должны будем вставить опцию командной кнопки. Это особенность Excel, поэтому выполните следующие действия:
Шаг 1: Введите имя подмножества, скажем «Setcount ()», как показано на скриншоте ниже:
Код:
Sub Setcount () End Sub
Шаг 2: Объявите ту же переменную «Rnct», что и диапазон в подмножестве, как показано на скриншоте ниже:
Код:
Sub Setcount () Dim Rnct As Sub End Sub
Шаг 3: Затем введите ключевое слово «Set» и укажите диапазон.
Код:
Sub Setcount () Dim Rnct в качестве установленного диапазона Rnct = Range ("A2: A11") End Sub
Шаг 4: Теперь, после исправления диапазона, нам нужно увидеть всплывающее окно или диалоговое окно, показывающее количество ячеек в диапазоне. Следовательно, используйте функцию «MsgBox», которая при выполнении подсчета появится в диалоговом окне. Введите «MsgBox переменная name.count». В момент, после ввода имени переменной, затем точка (.) Появляется выпадающий список с различными функциями, и мы выбираем «count» или вручную набираем «count».
Введите «MsgBox Rnct.count» и после выполнения появится счетчик.
Шаг 5: Теперь мы хотим вставить командную кнопку, и при нажатии на эту кнопку должно появиться окно сообщения.
Нажмите «Вставить» на вкладке «Разработчик», как показано в красном поле, и вы увидите раскрывающийся список категории «Элементы управления формой». Нажмите на самую первую прямоугольную прямоугольную форму, которую нам нужно будет нарисовать вручную и вставить в лист Excel:
Шаг 6: Нажав на прямоугольник, нарисуйте и вставьте блок в лист, и как только вы начнете рисовать, появится диалоговое окно, как показано ниже. Это кнопка окна «Назначить макрос» и выберите макрос подмножества «Setcount». Нажмите «ОК».
Это означает, что мы назначили макрос для этой кнопки. И по щелчку, он будет выполнен.
Шаг 7: Появится, как показано ниже в Excel.
Шаг 8: Щелкните по нему правой кнопкой мыши и переименуйте его, используя опцию « Редактировать текст », как показано ниже:
Шаг 9: Дайте ему имя как «COUNT», и вы увидите его в Excel, как показано ниже.
Шаг 10: Затем нажмите кнопку «COUNT». После нажатия кнопки «COUNT» появится окно сообщения, как показано ниже:
Как мы видим, есть 10 имен и показали правильное число в диапазоне от А2 до А11.
То, что нужно запомнить
- Убедитесь, что у вас есть вкладка «Разработчик», вставленная в ленты Excel для запуска этих кодов VBA.
- «Набор» в основном применяется к рабочим листам / диапазону ячеек на определенном листе.
Рекомендуемые статьи
Это руководство по VBA Set. Здесь мы обсудим, как назначить ссылку на объект или диапазон ячеек, используя Excel VBA Set Keyword вместе с практическими примерами и загружаемым шаблоном Excel. Ниже приведены несколько полезных статей о Excel, связанных с VBA.
- Функция конкатенации VBA
- Обучающие программы по наборам иконок Excel
- Работа с диапазонными ячейками в VBA
- Решить уравнение в Excel
Доброго времени суток! Прошу описать применение функцию «Set» на доступном языке Особенно интересует когда обязательно объявлять: Спасибо заранее! P.S. буду рад любому Вашему ответу, даже короткому |
|
Для переменных текстового, числового и логического типов SET не применяется. Для ОБЪЕКТОВ необходимо использовать оператор SET |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Всегда желательно в конце процедуры: Я сам — дурнее всякого примера! … |
И вообще, вас что, на Гугле забанили? По VBA есть куча справочников — в каждом описано различие между SET и LET Цитата: В VBA существует два основных типа инструкций присваивания Let и Инструкция Set присваивает ссылку на объект переменной или свойству |
|
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
ИМХО, если переменная определена в процедуре (локальная), то время её жизни ограничено процедурой и по окончании процедуры (Exit Sub) все локальные переменные «умирают» и освобождают память. Поэтому Set «Переменная» = Nothing для локальных переменных делать не обязательно (конечно, если сама процедура не жутко жадная в смысле пожирания памяти) С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
{quote}{login=Alex_ST}{date=10.06.2010 11:29}{thema=}{post}Поэтому Set «Переменная» = Nothing для локальных переменных делать не обязательно (конечно, если сама процедура не жутко жадная в смысле пожирания памяти){/post}{/quote}Позвольте не согласиться. VBA редактор не такой уж продвинутый, как может показаться и он своими силами высвобождает память не всегда корректно. Он по идее должен все выгрузить, но такое происходит далеко не всегда. Лично я предпочитаю в большинстве случаев именно принудительно высвобождать память от подобных переменных, что и Вам советую. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
{quote}{login=Alex_ST}{date=10.06.2010 11:29}{thema=}{post}ИМХО, если переменная определена в процедуре (локальная), то время её жизни ограничено процедурой и по окончании процедуры (Exit Sub) все локальные переменные «умирают» и освобождают память. Поэтому Set «Переменная» = Nothing для локальных переменных делать не обязательно (конечно, если сама процедура не жутко жадная в смысле пожирания памяти){/post}{/quote} Я сам — дурнее всякого примера! … |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Ну вот, за Димой разве успеешь…. Могу только дополнить — не только в ВБА. ВБ5, ВБ6 тоже грешили этим. И сами разработчики рекомендовали делать ТАК явно. Я сам — дурнее всякого примера! … |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
По поводу «правил хорошего тона» при программировании абсолютно с вами согласен. Это как ржавчина на кузове автомобиля: на скорость не влияет, но и самому смотреть противно, и похвастаться перед другими как-то стыдно… С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
EducatedFool, спасибо Вам за ответы, но зачем иронизировать или Вы не заметили «…на доступном языке»?! Спасибо Вам, Алексей, Дмитрий и Сергей! P.S. теперь все понятно и просто. |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Алекс, я покраснел прочитав: «к сожалению иногда грешат примерами без комментариев.» Правда, неудобно. Но я так и читаю чужой код. Не глядя на комменты. Самоучка — и так привык. С Вами абсолютно согласен(только вчера azam-у объяснял полезность комментов), но себя, боюсь, уже не исправлю:-( Я на этом форуме мнооооогому пытаюсь научиться. В первой строке списка доброта Юрий М, его умение общаться, не обижая других. Мне бы так. Ладно, что-то я совсем расчувствовался(это из мультика, не подумайте). Я сам — дурнее всякого примера! … |
слэн Пользователь Сообщений: 5192 |
зря вы на goto ополчились иногда без него никак.. коммменты, да, ленюсь писать, каюсь |
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
Я тоже не понимаю, чем GoTo не угодил. Да, плохо смотрится, когда таких переходов куча и они используются нецелесообразно. Но иногда ведь действительно нужен этот переход и если без него, то наоборот, код смотрится более неграмотно и загроможденно, потому что приходится выдумать обходные пути. И не помню, чтобы кто-то рекомендовал его не использовать. Вывод: не брезгуйте этим оператором — он бывает весьма полезен и не вреден в умеренных количествах. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
Мне лично комменты писать откровенно лень. Прописывать комменты бывает намного дольше, чем сами коды. Для себя я пишу с комментами, а в форум — лень…. P.S. Исправляться не собираюсь. Пока, во всяком случае. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
{quote}{login=слэн}{date=10.06.2010 12:52}{thema=}{post}зря вы на goto ополчились иногда без него никак.. http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/pp/ewd215.html почитайте(прям сейчас нашел, не умею, как Дима, доходчиво объяснять) Я сам — дурнее всякого примера! … |
Hugo Пользователь Сообщений: 23257 |
Но что-то есть в этом GoTo… В AutoIt с 3-й версии его вообще убрали, тоже мучался, так я и не понял, как сподручнее обходить, местами вообще придуманный алгоритм менять приходилось… |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
{quote}{login=Hugo}{date=10.06.2010 02:04}{thema=}{post}Но что-то есть в этом GoTo… В AutoIt с 3-й версии его вообще убрали, тоже мучался, так я и не понял, как сподручнее обходить, местами вообще придуманный алгоритм менять приходилось…{/post}{/quote} Я сам — дурнее всякого примера! … |
слэн Пользователь Сообщений: 5192 |
вот пример когда никак: on error goto вот пример, когда как, но не красиво и yt’aatrnbdyj^ for i=1 to n можно, конечно, функцией оформить, с использованием exit function, но на вызов функции тратится время |
{quote}{login=слэн}{date=10.06.2010 02:12}{thema=}{post} http://forum.ixbt.com/topic.cgi?id=23:31044 |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Слэн(хочу Вас все же называть с большой буквы), плохой пример. Во всех примерах мэтров программирования goto используется только для определения ошибки, с последующим Exit Sub. То есть goto на выход. И я в жизни не встречал ситуаций, когда нельзя было избежать его. Поначалу(это еще в 2000 где-то), напрягало, помню. Зато сейчас даже в мыслях не бывает. Вот так мозги перестроились. Прсто блок стоит. Я сам — дурнее всякого примера! … |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
{quote}{login=Казанский}{date=10.06.2010 02:17}{thema=Re: }{post}{quote}{login=слэн}{date=10.06.2010 02:12}{thema=}{post} http://forum.ixbt.com/topic.cgi?id=23:31044 {/post}{/quote} Я сам — дурнее всякого примера! … |
слэн Пользователь Сообщений: 5192 |
вообщето алгоритм можно записать так: Sub t() что короче, яснее и быстрее но я уже приводил на форуме множество раз алгоритмы, с использованием on error goto ( и в паре с ним ще и просто goto) — да, можно сделать по-другому, но так быстрее.. зачем же делать хуже, но без goto ? |
слэн Пользователь Сообщений: 5192 |
можно еще так: Sub t() |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Слэн, Вы читаете, что я пишу? Я сам — дурнее всякого примера! … |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
В слове anser буква W пропущена, но это уже флуд. Если честно — боюсь, Диме позавчера спать не давали, оффтопили по полной. Чувствую, психанет и начнет стирать все без разбора. А главное по делу! Хотя этот топик флудом не считаю. Мы, как программеры, обсуждаем целесообразность применения оператора goto. Я сам — дурнее всякого примера! … |
Эммм…мммм…а хорошая тема получилось Спасибо и за «GoTo» |
|
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Ну, я бы не был так категоричен, утверждая, что обсуждение целесообразности применения оператора goto в топике с названием «Описание применения «Set»» не является оффтопом… С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Да… А топик-стартер-то, оказывается, ещё не спит, а тему-то просматривает… С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
слэн Пользователь Сообщений: 5192 |
<но я уже приводил на форуме множество раз алгоритмы, с использованием on error goto ( и в паре с ним еще и просто goto)> вот пример из моего решателя балды: (уж поверьте — оптимизировал-оптимизировал ) Sub fnd(ByVal s$) pos = InStr(1, s, «?») |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#30 10.06.2010 15:37:39 To Alex_ST: Ну вот. пришел поручик Ржевский и все опошлил:-) Я сам — дурнее всякого примера! … |
Содержание
- Set statement
- Syntax
- Remarks
- Example
- See also
- Support and feedback
- Инструкция Set (Visual Basic)
- Синтаксис
- Компоненты
- Комментарии
- Правила
- Поведение
- Пример
- VBA Set — Присвоить ссылку на объект, диапазон ячеек с помощью набора Excel VBA
- Excel VBA Set
- Как использовать набор ключевых слов в VBA?
- Excel VBA Set — Пример # 1
- Набор Excel VBA — Пример № 2
- Набор Excel VBA — Пример № 3
- То, что нужно запомнить
- Рекомендуемые статьи
Set statement
Assigns an object reference to a variable or property.
Syntax
Set objectvar = <[ New ] objectexpression | Nothing >
The Set statement syntax has these parts:
Part | Description |
---|---|
objectvar | Required. Name of the variable or property; follows standard variable naming conventions. |
New | Optional. New is usually used during declaration to enable implicit object creation. When New is used with Set, it creates a new instance of the class. If objectvar contained a reference to an object, that reference is released when the new one is assigned. The New keyword can’t be used to create new instances of any intrinsic data type and can’t be used to create dependent objects. |
objectexpression | Required. Expression consisting of the name of an object, another declared variable of the same object type, or a function or method that returns an object of the same object type. |
Nothing | Optional. Discontinues association of objectvar with any specific object. Assigning Nothing to objectvar releases all the system and memory resources associated with the previously referenced object when no other variable refers to it. |
To be valid, objectvar must be an object type consistent with the object being assigned to it.
The Dim, Private, Public, ReDim, and Static statements only declare a variable that refers to an object. No actual object is referred to until you use the Set statement to assign a specific object.
The following example illustrates how Dim is used to declare an array with the type Form1 . No instance of Form1 actually exists. Set then assigns references to new instances of Form1 to the myChildForms variable. Such code might be used to create child forms in an MDI application.
Generally, when you use Set to assign an object reference to a variable, no copy of the object is created for that variable. Instead, a reference to the object is created. More than one object variable can refer to the same object. Because such variables are references to the object rather than copies of the object, any change in the object is reflected in all variables that refer to it. However, when you use the New keyword in the Set statement, you are actually creating an instance of the object.
Example
This example uses the Set statement to assign object references to variables. YourObject is assumed to be a valid object with a Text property.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Инструкция Set (Visual Basic)
Объявляет процедуру свойства, используемую Set для назначения значения свойству.
Синтаксис
Компоненты
attributelist
Необязательный элемент. См. список атрибутов.
accessmodifier
Необязательный параметр для одного из Get операторов и Set инструкций в этом свойстве. Может применяться один из перечисленных ниже типов.
value
Необязательный элемент. Параметр, содержащий новое значение свойства. Если этот параметр не задан (то есть если список параметров отсутствует или пуст), определяется неявный параметр value . Тип данных этого неявного параметра — это тип данных свойства, в котором объявлена эта Set инструкция.
datatype
Обязательный, если value присутствует и Option Strict имеет значение On . Невозможно присутствовать, если value не задано. Тип value данных параметра. Указанный тип данных должен совпадать с типом данных свойства, в котором объявлена эта Set инструкция.
statements
Необязательный элемент. Одна или несколько инструкций, которые выполняются при вызове Set процедуры свойства.
End Set
Обязательный. Завершает определение Set процедуры свойства.
Комментарии
Каждое свойство должно иметь процедуру Set свойства, если свойство не помечается ReadOnly . Процедура Set используется для задания значения свойства.
Visual Basic автоматически вызывает процедуру свойства Set , когда инструкция присваивания предоставляет значение, хранящееся в свойстве.
Visual Basic передает параметр процедуре Set во время присвоения свойств. Если параметр не указан Set , интегрированная среда разработки (IDE) использует неявный параметр с именем value . Параметр содержит значение, которое будет назначено свойству. Обычно это значение хранится в частной локальной переменной и возвращается при каждом вызове Get процедуры.
Текст объявления свойства может содержать только Get свойства и Set процедуры между оператором Property и оператором End Property . Он не может хранить ничего, кроме этих процедур. В частности, оно не может хранить текущее значение свойства. Это значение необходимо сохранить за пределами свойства, так как, если он хранится в любой из процедур свойств, другая процедура свойства не может получить к ней доступ. Обычный подход заключается в хранении значения в частной переменной, объявленной на том же уровне, что и свойство. Необходимо определить процедуру Set внутри свойства, к которому он применяется.
Процедура Set по умолчанию использует уровень доступа, содержащий его свойство, если в инструкции Set не используется accessmodifier .
Правила
Смешанные уровни доступа. Если вы определяете свойство чтения и записи, можно дополнительно указать другой уровень доступа для процедуры Get или Set процедуры, но не оба. В этом случае уровень доступа процедуры должен быть более строгим, чем уровень доступа свойства. Например, если свойство объявлено Friend , можно объявить процедуру Set Private , но не Public .
Если вы определяете WriteOnly свойство, Set процедура представляет все свойство. Нельзя объявить другой уровень доступа для Set этого свойства, так как для этого свойства заданы два уровня доступа.
Поведение
Возвращается из процедуры свойства. Set Когда процедура возвращается в вызывающий код, выполнение продолжается после инструкции, которая предоставила хранимое значение.
Set Процедуры свойств могут возвращать с помощью инструкции Return или exit.
Операторы Exit Property и Return операторы вызывают немедленный выход из процедуры свойства. Любое количество операторов Exit Property и Return инструкций может отображаться в любом месте процедуры, а также можно смешивать и Return смешивать Exit Property инструкции.
Пример
В следующем примере оператор используется Set для задания значения свойства.
Источник
VBA Set — Присвоить ссылку на объект, диапазон ячеек с помощью набора Excel VBA
Excel VBA Set
«Set» — это ключевое слово, используемое в программировании VBA для назначения ссылки на объект или диапазон ячеек, который останется неизменным во всей программе или коде в Excel. VBA Set в основном помогает нам избежать повторного ввода диапазона, который мы должны выбрать при выполнении кода. В Excel «Набор» в основном применяется к рабочим листам / диапазону ячеек на определенном листе.
Синтаксис:
Установить имя объекта / переменную = объект / диапазон
Примечание. Вам необходимо иметь вкладку «Разработчик» на листе Excel.
Если вы не видите вкладку «Разработчик» в Excel, выполните следующие действия:
Шаг 1: Нажмите на опцию файла .
Шаг 2: появляется выпадающий список, нажмите на вкладку « Параметры ».
Шаг 3: После того, как вы нажмете «Параметры», появится диалоговое окно, как показано ниже, и выберите параметр « Настроить ленту» .
Шаг 4: Когда мы перетаскиваем параметры настройки ленты, мы находим параметр для разработчика, нам нужно установить этот флажок, который позволит нам использовать VBA в Excel.
Как использовать набор ключевых слов в VBA?
Ниже приведены различные примеры использования ключевого слова set в Excel VBA.
Вы можете скачать этот шаблон VBA Set Excel здесь — VBA Set Excel Template
Excel VBA Set — Пример # 1
Мы возьмем простой пример ключевого слова Set в Excel VBA. Предположим, мы хотели бы выбрать диапазон и установить его в качестве фиксированного диапазона, чтобы избежать повторения. Ниже приведен диапазон ячеек, содержащий имена:
Чтобы использовать ключевое слово set в Excel VBA, выполните следующие действия:
Шаг 1: Перейдите на вкладку «Разработчик», а затем нажмите на «Visual Basic» с левой стороны (первая опция), как показано ниже.
Как только вы нажмете на него, появится новое окно, как показано ниже:
Вы заметите, что он содержит две вкладки с левой стороны, «Лист1 (Лист1)» и «ThisWorkbook». Единственное отличие состоит в «Sheet1», когда вы хотите выполнить код только для этого конкретного листа, а в «ThisWorkbook» мы можем написать код и выполнить его, который можно применить ко всей книге Excel.
Шаг 2: Дважды щелкните «Лист1 (Лист1)», и вы увидите пустой экран, на котором нам нужно написать код. Сначала объявите подмножество как Sub name и нажмите Enter, и вы увидите подмножество, созданное, как показано ниже:
Код:
Это способ, которым мы создаем подмножество, и автоматически появляется «End Sub». Это по умолчанию особенность Excel. Если «End Sub» не появляется, код не будет выполнен и выдаст ошибку.
Шаг 3: Теперь мы объявим переменные, которые будут использоваться в коде.
Введите Dim имя переменной и тип переменной. Здесь имя будет похоже на идентификатор диапазона, а тип будет таким, как Integer, Long, String, Range и т. Д.
Код:
Здесь «Rnst» — имя переменной и присваивает (As) ее как функцию Range. Это предупредит систему о том, что будет сделан выбор диапазона.
Шаг 4: Затем введите ключевое слово «Set» и укажите диапазон, используя формат: Set variable = Range («range of cell») .
Код:
Шаг 5: Мы должны выбрать указанный диапазон строк. Следовательно, введите select как Rnst.Select См. Скриншот ниже:
Код:
Шаг 6: Запустите код, нажав F5 или кнопку Run, и посмотрите результат.
Он выберет указанный диапазон от ячеек A2 до A11.
Набор Excel VBA — Пример № 2
Предположим, мы хотим вставить эти ячейки или расположить их в другой ячейке. Мы будем использовать тот же код, что и выше, и добавим код для вставки этих данных в несколько столбцов.
Выполните следующие шаги:
Шаг 1: Теперь мы скопируем диапазон ячеек, который является столбцом имени. Введите copy, т.е. «Rnst.Copy», когда вы набираете «Rnst.», Появляется своего рода выпадающий список. Он содержит различные функции, такие как копирование, вставка и т. Д.
Шаг 2: Вы можете прокрутить вниз и выбрать желаемую функцию, которую хотите выполнить. Здесь просто введите «Копировать», как показано на скриншоте ниже:
Код:
Шаг 3: Скомпилируйте код, нажав клавишу F8.
Выполнив эту функцию копирования, вы увидите, что в Excel диапазон копируется, и вокруг диапазона ячеек появляются пунктирные линии, как показано ниже:
Шаг 4: Теперь нам нужно вставить эти ячейки, скажем, в соседние столбцы один за другим, поэтому нам нужно использовать функцию цикла «For» и предположить, что нам нужно вставить 5 раз, поэтому мы напечатаем ее, как показано ниже:
Для целых чисел i = от 1 до 5 -> это указывает, сколько раз нам нужно вставить данные. Если 5, то от 1 до 5, в зависимости от того, что вы считаете предпочтительным.
Код:
Шаг 5: Выберите ячейку, в которую вы хотите вставить этот диапазон ячеек. Предположим, что мы хотим начать вставку из столбца B2, а затем вставка данных должна быть динамической, то есть она должна автоматически выбирать соседние столбцы один за другим, не перекрывая друг друга. Следовательно, синтаксис будет «Ячейка (номер строки, номер столбца) .PasteSpecial».
Ячейки (2, i + 1) .PasteSpecial, Здесь 2-> представляет номер строки, а i + 1 -> представляет номер столбца. i + 1 означает, что первое значение I, объявленное в цикле «For», равно i = 1, следовательно, значение столбца станет 2, оно указывает, что оно начинает вставляться из столбца B. И по мере увеличения значения i оно будет продолжать выбирать соседние столбцы. по одному.
Код:
Шаг 6. Введите « Next i », что означает, что вы увеличиваете значение «i» по одному, чтобы вставка столбца оставалась динамичной.
Код:
Шаг 7: Нажмите «F8», чтобы строка за строкой выполняла код и покажет вам вставку ячейки в соседние столбцы один за другим.
Здесь вы можете увидеть значение i, равное 1, и данные были вставлены в столбец B по желанию.
Шаг 8: Теперь, когда вы снова нажмете «F8», вы увидите, что теперь значение i равно 2. Следовательно, 2 + 1 станет 3, и данные будут вставлены в ячейку (2, 3), то есть значение строки такое же, но столбец номер меняется, как показано на скриншоте ниже:
После того, как повторение цикла завершится, вы увидите, что данные вставлены 5 раз, то есть с счетчика 1 до 5, начинающего вставку из столбца B в столбец F, как показано ниже:
Набор Excel VBA — Пример № 3
Предположим, мы хотели бы показать количество ячеек в этом диапазоне в окне сообщения, появляющемся при нажатии кнопки. Мы возьмем те же данные, как показано ниже.
Также мы запустим код этого примера на новом листе. Следовательно, добавьте новый лист, и в окне VBA он будет выглядеть так:
Мы должны будем вставить опцию командной кнопки. Это особенность Excel, поэтому выполните следующие действия:
Шаг 1: Введите имя подмножества, скажем «Setcount ()», как показано на скриншоте ниже:
Код:
Шаг 2: Объявите ту же переменную «Rnct», что и диапазон в подмножестве, как показано на скриншоте ниже:
Код:
Шаг 3: Затем введите ключевое слово «Set» и укажите диапазон.
Код:
Шаг 4: Теперь, после исправления диапазона, нам нужно увидеть всплывающее окно или диалоговое окно, показывающее количество ячеек в диапазоне. Следовательно, используйте функцию «MsgBox», которая при выполнении подсчета появится в диалоговом окне. Введите «MsgBox переменная name.count». В момент, после ввода имени переменной, затем точка (.) Появляется выпадающий список с различными функциями, и мы выбираем «count» или вручную набираем «count».
Введите «MsgBox Rnct.count» и после выполнения появится счетчик.
Шаг 5: Теперь мы хотим вставить командную кнопку, и при нажатии на эту кнопку должно появиться окно сообщения.
Нажмите «Вставить» на вкладке «Разработчик», как показано в красном поле, и вы увидите раскрывающийся список категории «Элементы управления формой». Нажмите на самую первую прямоугольную прямоугольную форму, которую нам нужно будет нарисовать вручную и вставить в лист Excel:
Шаг 6: Нажав на прямоугольник, нарисуйте и вставьте блок в лист, и как только вы начнете рисовать, появится диалоговое окно, как показано ниже. Это кнопка окна «Назначить макрос» и выберите макрос подмножества «Setcount». Нажмите «ОК».
Это означает, что мы назначили макрос для этой кнопки. И по щелчку, он будет выполнен.
Шаг 7: Появится, как показано ниже в Excel.
Шаг 8: Щелкните по нему правой кнопкой мыши и переименуйте его, используя опцию « Редактировать текст », как показано ниже:
Шаг 9: Дайте ему имя как «COUNT», и вы увидите его в Excel, как показано ниже.
Шаг 10: Затем нажмите кнопку «COUNT». После нажатия кнопки «COUNT» появится окно сообщения, как показано ниже:
Как мы видим, есть 10 имен и показали правильное число в диапазоне от А2 до А11.
То, что нужно запомнить
- Убедитесь, что у вас есть вкладка «Разработчик», вставленная в ленты Excel для запуска этих кодов VBA.
- «Набор» в основном применяется к рабочим листам / диапазону ячеек на определенном листе.
Рекомендуемые статьи
Это руководство по VBA Set. Здесь мы обсудим, как назначить ссылку на объект или диапазон ячеек, используя Excel VBA Set Keyword вместе с практическими примерами и загружаемым шаблоном Excel. Ниже приведены несколько полезных статей о Excel, связанных с VBA.
- Функция конкатенации VBA
- Обучающие программы по наборам иконок Excel
- Работа с диапазонными ячейками в VBA
- Решить уравнение в Excel
Источник
Excel VBA Set
“Set”, is a keyword used in VBA programming to assign a reference to an object or cell range which is going to remain fix throughout the program or code in Excel. VBA Set basically helps us in avoiding repetitive input of range we need to select while executing the code. In excel, “Set” is mostly applied on worksheets/cell range in a particular sheet.
Syntax
Set object-name/variable = Object/Range
Note: You need to have Developer tab in the excel worksheet.
If you do not see the “Developer” tab in excel, refer below steps:
Step 1: Click on File Option.
Step 2: Drop-down appears, Click on Options tab.
Step 3: Once you click on “Options”, a dialog box appears as shown below and click on the Customize Ribbon option.
Step 4: When we drag down in the customize ribbon options we will find an option for Developer we need to check that box which will enable us to use VBA in excel.
How to Use a Set Keyword in VBA?
Below are the different examples to use set keyword in Excel VBA.
You can download this VBA Set Excel Template here – VBA Set Excel Template
Excel VBA Set – Example #1
We shall take a simple example of a Set keyword in Excel VBA. Suppose we would like to select a range and set it as fix range so as to avoid the repetition. Below is the cell range containing the names:
Follow the below steps to use set keyword in Excel VBA:
Step 1: Click on “Developer” tab and then click on the “Visual Basic” option on the left-hand side (first option) as shown below.
Once you click on it, a new window appears as shown below:
You will notice that it contains two tabs on the left-hand side, “Sheet1(Sheet1)” and “ThisWorkbook”. The only difference is “Sheet1” when you want to execute code for this particular sheet only and in “ThisWorkbook”, we can write a code and execute which can be applied for the whole excel workbook.
Step 2: Double Click on “Sheet1(Sheet1) and you will see a blank screen where we need to write the code. First, declare a subset as Sub name and press enter and you will see a subset created as shown below:
Code:
Sub setexmp() End Sub
This is the way we create a subset and automatically “End Sub” appears. This is by default feature of excel. If “End Sub” does not appear the code will not execute and throw an error.
Step 3: Now, we shall declare variables to be used in the code.
Type Dim variable name and variable type. Here, the name will be like the identity of the range and type would be whether as Integer, Long, String, Range, etc.
Code:
Sub setexmp() Dim Rnst As Range End Sub
Here “Rnst” is a variable name and assign(As) it as Range function. This will alert the system that, a range selection would be done.
Step 4: Then type “Set” keyword and give a range using the format: Set variable = Range(“cell range”).
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") End Sub
Step 5: We have to select this row range specified. Hence, type select as Rnst.Select Refer screenshot below:
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") Rnst.Select End Sub
Step 6: Run the code by hitting F5 or Run button and see the output.
It will select the Range specified which is from cells A2 to A11.
Excel VBA Set – Example #2
Suppose we want to paste these cells or range in another cell. We shall use the same code as above and add code for pasting that data in multiple columns.
Follow the below steps:
Step 1: Now we will copy the range of cells which is the name column. Type copy i.e. “Rnst.Copy”, when you type “Rnst.”a kind of drop-down appears. It contains various functions like copy, paste, etc.
Step 2: You can scroll down and select the desired function you want to perform. Here just type “Copy” as shown in the screenshot below:
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") Rnst.Select Rnst.Copy End Sub
Step 3: Compile the code by pressing F8 Key.
Once, you execute this copy function, you will see that in excel the range is copied and dotted lines appear around the cell range as shown below:
Step 4: Now, we need to paste this cells, say in adjacent columns one by one, so we need to use a loop function “For” and suppose 5 times we need to paste so we will type it as shown below:
For Integer i = 1 to 5 -> this specifies how many times we need to paste the data. If 5 then 1 to 5 else whichever count you prefer.
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") Rnst.Select Rnst.Copy For i = 1 To 5 End Sub
Step 5: Select a cell in which you want to paste this cell range. Suppose we want to start pasting from column B2 and then pasting the data should be dynamic i.e. it should automatically select adjacent columns one by one without overlapping. Hence, the syntax would be “Cell(row number, column number).PasteSpecial”.
Cells(2, i + 1).PasteSpecial, Here, 2-> represents the row number and, i+1 -> represents column number. i+1 means the first value of I declared in “For” loop is i=1, hence column value will become 2, it specifies that it start pasting from column B. And as and when i value increases it will keep selecting adjacent columns one by one.
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") Rnst.Select Rnst.Copy For i = 1 To 5 Cells(2, i + 1).PasteSpecial xlValues End Sub
Step 6: Type “Next i” which means that you are increasing the value of “i” one by one so that the column pasting remains dynamic.
Code:
Sub setexmp() Dim Rnst As Range Set Rnst = Range("A2:A11") Rnst.Select Rnst.Copy For i = 1 To 5 Cells(2, i + 1).PasteSpecial xlValues Next i End Sub
Step 7: Press “F8” to see the code execute line by line and will show you the pasting of cell in adjacent columns one by one.
Here you can see the value of i is 1 and data has been pasted in column B as desired.
Step 8: Now when you press “F8” again you will see that now the value of i is 2. Hence, 2+1 will become 3 and data will be pasted in Cell (2,3) i.e. row value is same but column number changes as shown in the screenshot below:
After repeating loop completes you will see the data pasted 5 times i.e. from count 1 to 5 starting to paste from Column B till Column F as shown below:
Excel VBA Set – Example #3
Suppose we would like to show a count of the number of cells in that range in a message box appearing on click of a button. We shall take the same data as shown below.
Also, we will run this example’s code in the new sheet. Hence, add a new sheet and in VBA window it will appear as below:
We will have to insert a command button option. It’s a feature of excel, so follow the below steps:
Step 1: Enter a subset name say “Setcount()” as shown in the screenshot below:
Code:
Sub Setcount() End Sub
Step 2: Declare the same variable “Rnct” as a range in the subset as shown in the screenshot below:
Code:
Sub Setcount() Dim Rnct As Range End Sub
Step 3: Then type “Set” keyword and give a range.
Code:
Sub Setcount() Dim Rnct As Range Set Rnct = Range("A2:A11") End Sub
Step 4: Now, after fixing the range, we need to see pop up box or dialog box showing the count of cells in the range. Hence, use “MsgBox” function which upon execution a count will appear in the dialog box. Type “MsgBox variable name.count”. The moment after typing the variable name then dot(.) a drop-down appears containing various functions and we would select “count” or manually type “count”.
Type “MsgBox Rnct.count” and upon execution, it will appear count.
Step 5: Now, we want to insert a command button and on click, on that button that message box should appear.
Click on “Insert” in the “Developer” tab as highlighted in the red box and you will see a drop-down of category “Form Controls”. Click on the very first rectangle box-like shape which we will have to manually draw and insert in excel sheet:
Step 6: Upon click on the rectangle box, draw and insert the box in sheet and once you start drawing a dialog box appears as shown below. It’s an “Assign Macro” window button and select the “Setcount” subset macro. Click on “OK”.
This signifies that we have assigned count macro to this button. And upon click, it will execute.
Step 7: It will appear as shown below in excel.
Step 8: Right-click on it and rename it using the “Edit Text” option as shown below:
Step 9: Give it a name as “COUNT” and you will see it in excel as count as shown below.
Step 10: Then click on the “COUNT” button: Once you click on “COUNT” button a message box appears as shown below:
As we can see there are 10 names and have shown the correct number from range A2 to A11.
Things to Remember
- Make sure you have the “Developer” tab inserted in Excel ribbons to run this VBA codes.
- ‘Set’ is mostly applied on worksheets/cell range in a particular sheet.
Recommended Articles
This is a guide to VBA Set. Here we discuss how to assign a reference to an object or cell range using excel VBA Set Keyword along with practical examples and downloadable excel template. Below are some useful excel articles related to VBA –
- VBA Concatenate
- VBA Range Cells
- VBA RGB
- VBA XML
VBA Set is a statement that assigns any value key that says an object or a reference to a variable. We use this function to define the parameter for a certain variable. For example, if we write Set M = A, the M reference has the same values and attributes as A.
In VBA, an object is a core of Excel because, without objects, we cannot do anything. Objects are a workbook, worksheet, and range. When we declare a variable, we need to assign a data type. We can also assign objects as data types. To assign a value to declared object variables, we need to use the word “SET.” The word “Set” refers to a new object in VBA. For example, the particular range of the particular worksheet.
Table of contents
- Excel VBA Set Statement
- How to use Excel VBA Set Statement?
- #1 – Set Statement with Range Object Variables
- #2 – Set Statement with Worksheet Object Variables
- #1 – Without “Set” Word
- #2 – With “Set” Word
- #3 – Set Statement with Workbook Object Variables
- Recommended Articles
- How to use Excel VBA Set Statement?
You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA Set Statement (wallstreetmojo.com)
How to use Excel VBA Set Statement?
You can download this VBA Set Statement Template here – VBA Set Statement Template
#1 – Set Statement with Range Object Variables
For example, assume you want to use the range A1 to D5 quite often. Then, instead of writing the code as Range(“A1:D5”) every time, we can declare the variable as range and set the range reference as Range(“A1:D5”).
Step 1: Declare the variable as a Range object.
Code:
Sub Set_Example()
Dim MyRange As Range
End Sub
Step 2: When we assign the data type as a range, use the word “Set.”
Code:
Sub Set_Example() Dim MyRange As Range Set MyRange = End Sub
Step 3: Now, mention the range.
Code:
Sub Set_Example() Dim MyRange As Range Set MyRange = Range("A1:D5") End Sub
Step 4: The variable “MyRange” equals the range A1 to D5. Using this variable, we can access this range’s properties and methods.
We can copy, add a comment in excelIn Excel, Insert Comment is a feature used to share tips or details with different users working within the same spreadsheet. You can either right-click on the required cell, click on “Insert Comment” & type the comment, use the shortcut key, i.e., Shift+F2, or click on the Review Tab & select “New Comment”. read more, and do many other things.
For example, for purpose, we have created some numbers here.
Now using the variable, we will change the font size to 12.
Code:
Sub Set_Example() Dim MyRange As Range Set MyRange = Range("A1:D5") MyRange.Font.Size = 12 End Sub
It will change the font size of the assigned range.
Like this, we can do many things with a particular range by using the word “Set.”
#2 – Set Statement with Worksheet Object Variables
We have seen how “set” works with a range object in VBARange is a property in VBA that helps specify a particular cell, a range of cells, a row, a column, or a three-dimensional range. In the context of the Excel worksheet, the VBA range object includes a single cell or multiple cells spread across various rows and columns.read more. It works the same as the worksheet object as well..
Let’s say you have 5 worksheets in your workbook. However, you want to keep going back to the one particular worksheet. So, you can set that worksheet name to the defined object variable.
For example, look at the below code.
Code:
Sub Set_Worksheet_Example() Dim Ws As Worksheet Set Ws = Worksheets("Summary Sheet") End Sub
The above code defines the variable “Ws” as an object variable. In the next line, by using the word “Set,” we set the variable to the worksheet named “Summary Sheet.”
By using this variable, we can do all the associated things. Take a look at the below two sets of code.
#1 – Without “Set” Word
Code:
Sub Set_Worksheet_Example1() 'To select the sheet Worksheets("Summary Sheet").Select 'To Activate the sheet Worksheets("Summary Sheet").Activate 'To hide the sheet Worksheets("Summary Sheet").Visible = xlVeryHidden 'To unhide the sheet Worksheets("Summary Sheet").Visible = xlVisible End Sub
Every time we have used the worksheets object to refer to the sheet “Summary Sheet,” This makes the code lengthy and requires a lot of time to type.
As part of the huge code, it is frustrating to type the worksheet name like this every time you need to reference it.
Now, look at the advantage of using “Set” in code.
#2 – With “Set” Word
Code:
Sub Set_Worksheet_Example() Dim Ws As Worksheet Set Ws = Worksheets("Summary Sheet") 'To select the sheet Ws.Select 'To Activate the sheet Ws.Activate 'To hide the sheet Ws.Visible = xlVeryHidden 'To unhide the sheet Ws.Visible = xlVisible End Sub
When we set the worksheet name, we can see the variable name while entering the code as part of the list.
#3 – Set Statement with Workbook Object Variables
The real advantage of the word “Set” in VBA arises when we need to reference different workbooks.
When we work with different workbooks, it is hard to type in the full name of the workbook, along with its file extension.
Assume you have two different workbooks named “Sales Summary File 2018.xlsx” and “Sales Summary File 2019.xlsx” we can set the two workbooks like the below code.
Code:
Sub Set_Workbook_Example1() Dim Wb1 As Workbook Dim Wb2 As Workbook Set Wb1 = Workbooks("Sales Summary File 2018.xlsx") Set Wb2 = Workbooks("Sales Summary File 2019.xlsx") End Sub
Now, variable Wb1 is equal to the workbook named “Sales Summary File 2018.xlsx,” and variable Wb2 is equal to the workbook named “Sales Summary File 2019.xlsx”.
We can access all the properties and methods associated with the workbook using this variable.
We can shorten the code like the one below.
Without Using Set Keyword to activate the workbook:
Workbooks("Sales Summary File 2018.xlsx").Activate
Using the Set Keyword to activate the workbook:
Wb1.Activate
It makes the writing of the code much simpler. However, once we set the workbook name, there is a worry of typo errors in the workbook names.
Recommended Articles
This article is a guide to VBA Set. Here, we learn how to use Excel VBA set statements to reference the object variable and some simple to advanced examples. Below are some useful Excel articles related to VBA: –
- VBA ReDim Array
- VBA LEN
- VBA Code in Excel
- VBA RGB
Заявление о множестве Excel VBA
VBA Set — это оператор, который используется для присвоения любого значения, ключ говорит об объекте или ссылке на переменную, мы используем эту функцию для определения параметра для определенной переменной, например, если мы напишем Set M = A, что означает теперь M ссылка имеет те же значения и атрибуты, что и A.
В VBA объект является ядром Excel, потому что без объектов мы ничего не можем сделать. Объектами являются Рабочая книга, Рабочий лист и Диапазон. Когда мы объявляем переменную, нам нужно присвоить ей тип данных, и мы также можем назначать объекты как типы данных. Чтобы присвоить значение объявленным объектным переменным, нам нужно использовать слово «SET». Слово «Set» используется для обозначения нового объекта в VBA, например, для обозначения определенного диапазона конкретного рабочего листа.
Как использовать инструкцию набора Excel VBA?
Вы можете скачать этот шаблон заявления VBA здесь — Шаблон заявления VBA Set
# 1 — Оператор Set с переменными объекта диапазона
Например, предположим, что вы хотите довольно часто использовать диапазон от A1 до D5. Вместо того, чтобы писать код как Range («A1: D5») каждый раз, мы можем объявить переменную как диапазон и установить ссылку на диапазон как Range («A1: D5»)
Шаг 1. Объявите переменную как объект Range.
Код:
Sub Set_Example ()
Dim MyRange As Range
Конец подписки
Шаг 2: В тот момент, когда мы назначаем тип данных как диапазон, используйте слово «Set».
Код:
Sub Set_Example () Dim MyRange As Range Set MyRange = End Sub
Шаг 3: Теперь упомяните диапазон.
Код:
Sub Set_Example () Dim MyRange As Range Set MyRange = Range ("A1: D5") End Sub
Шаг 4: Теперь переменная MyRange равна диапазону от A1 до D5. Используя эту переменную, мы можем получить доступ ко всем свойствам и методам этого диапазона.
Мы можем копировать, добавлять комментарии в Excel и многое другое.
Например, я создал здесь несколько чисел.
Теперь, используя переменную, я изменю размер шрифта на 12.
Код:
Sub Set_Example () Dim MyRange As Range Set MyRange = Range ("A1: D5") MyRange.Font.Size = 12 End Sub
Это изменит размер шрифта назначенного диапазона.
Таким образом, мы можем делать много вещей с определенным диапазоном, используя слово «Set».
# 2 — Установить оператор с переменными объекта рабочего листа
Мы видели, как «set» работает с объектом диапазона в VBA. Он работает точно так же, как объект рабочего листа.
Допустим, у вас есть 5 листов в вашей книге, и вы хотите продолжать возвращаться к одному конкретному листу, вы можете установить это имя рабочего листа для определенной переменной объекта.
Например, посмотрите на приведенный ниже код.
Код:
Sub Set_Worksheet_Example () Dim Ws As Worksheet Set Ws = Worksheets («Сводный лист») End Sub
В приведенном выше коде переменная «Ws» определена как объектная переменная, а в следующей строке, используя слово «Set», мы устанавливаем переменную в рабочий лист с именем «Summary Sheet».
Теперь, используя эту переменную, мы можем делать все, что с ней связано. Взгляните на следующие два набора кода.
# 1 — Без «установленного» слова
Код:
Sub Set_Worksheet_Example1 () 'Чтобы выбрать лист Worksheets («Итоговый лист»). Выберите «Чтобы активировать лист Worksheets (« Summary Sheet »). Активируйте« Чтобы скрыть лист Worksheets («Summary Sheet»). Visible = xlVeryHidden »Чтобы показать лист Worksheets («Итоговый лист»). Visible = xlVisible End Sub
Каждый раз, когда я использовал объект рабочих листов для ссылки на лист «Сводный лист». Это делает код очень длинным и требует много времени для ввода.
As part of the huge code, it is frustrating to type the worksheet name like this every time you need to reference the worksheet.
Now take a look at the advantage of using the word Set in Code.
#2 – With “Set” Word
Code:
Sub Set_Worksheet_Example() Dim Ws As Worksheet Set Ws = Worksheets("Summary Sheet") 'To select the sheet Ws.Select 'To Activate the sheet Ws.Activate 'To hide the sheet Ws.Visible = xlVeryHidden 'To unhide the sheet Ws.Visible = xlVisible End Sub
The moment we set the worksheet name we can see the variable name while entering the code as part of the list.
#3 – Set Statement with Workbook Object Variables
The real advantage of the word “Set” in VBA arises when we need to reference different workbooks.
When we work with different workbooks it is so hard to type in the full name of the workbook along with its file extension.
Assume you have two different workbooks named “Sales Summary File 2018.xlsx” and “Sales Summary File 2019.xlsx” we can set the two workbooks like the below code.
Code:
Sub Set_Workbook_Example1() Dim Wb1 As Workbook Dim Wb2 As Workbook Set Wb1 = Workbooks("Sales Summary File 2018.xlsx") Set Wb2 = Workbooks("Sales Summary File 2019.xlsx") End Sub
Now variable Wb1 is equal to the workbook named “Sales Summary File 2018.xlsx” and variable Wb2 is equal to the workbook named “Sales Summary File 2019.xlsx”.
Using this variable we can actually access all the properties and methods associated with the workbook.
We can shorten the code like the below.
Without Using Set Keyword to activate the workbook:
Workbooks("Sales Summary File 2018.xlsx").Activate
Using the Set Keyword to activate the workbook:
Wb1.Activate
This makes the writing of the code lot simpler and also once the workbook name is set there is a worry of typo error of the workbook names.
Set — это присвоение переменной объекта.
Т.е. вот есть объект Лист1, теперь мы будем его называть Sh.
И в данном случае Лист1 это не имя и не название, а кодовое имя. И кстати с таким именем (именно вот таким) могут быть проблемы, я так не обращаюсь.
Ещё добавлю — в примере выше в общем нет смысла в этом
set sh = Лист1
т.к. нет проблем применять всюду непосредственно Лист1 — вся разница что на 3 символа больше.
Но бывает что без объектной переменной не обойтись, например
Visual Basic | ||
|
хотя можно бы так:
Visual Basic | ||
|
но согласитесь непонятнее, да и работать не будет, т.к. там ещё в середине было
Visual Basic | ||
|
или
Visual Basic | ||
|
или
Visual Basic | ||
|
Если словарь всего один — часто пишут без переменной, используя with, а вот если сразу два — то нужна переменная.
или
Visual Basic | ||
|
или
Visual Basic | ||
|