Найти тему

📌 Макросы VBA Excel: Активация и выбор листа в Excel

Оглавление

Ребята, всем привет! 👋

Продолжаем изучать VBA Excel. И сегодня поговорим об активации и выборе листа в Excel.

Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)

✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.

Активация и выбор листа в Excel. Макросы VBA Excel
Активация и выбор листа в Excel. Макросы VBA Excel

Когда мы пишем код VBA, так или иначе нам приходиться связать разные листы в разных формах.

Активация листа означает выбор этого листа. Для активации или выбора листа в Excel мы вручную переходим на лист и нажимаем на вкладку «Лист».

Но как поступить если требуется автоматически выбрать или активировать лист для дальнейшего использования в коде VBA?

Существуют различные способы активации листа в VBA. Рассмотрим некоторые примеры как активировать лист в Excel VBA.

▶️ Пример № 1. Метод Activate Worksheet

Данный метод делает текущий лист активным листом.

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

Например,

  • Активируем лист с именем "Штатное расписание" :
-3
  • Активируем первый рабочий лист в активной рабочей книге
-4

🔔 где Activate - это метод объекта Workbook, который используется для превращения текущего листа в активный лист.

▶️ Пример 2. Объект VBA ActiveSheet

Для активации листа мы также можем ссылаться на текущий активированный рабочий лист, используя объект Excel VBA ActiveSheet.

Объект ActiveSheet VBA очень полезен при автоматизации задач и работе с текущим активным листом в окне активной книги. Если вы игнорируете объект ActiveSheet при ссылке на любой другой объект, например диапазон или диаграмму, VBA будет рассматривать ActiveSheet как текущий лист по умолчанию.

Например, оба приведенных ниже макроса будут ссылаться на активный лист:

Макрос выводит указанное значение в ячейку A1 Активного листа
Макрос выводит указанное значение в ячейку A1 Активного листа

▶️ Пример 3. Set ActiveSheet

Хорошей практикой является ссылка на активный лист в Excel VBA, задав ее в переменной.

Мы можем назначить и установить ActiveSheet объекту и ссылаться на него в любом месте процедуры.
Макрос выводит указанное значение в ячейку A1 Активного листа
Макрос выводит указанное значение в ячейку A1 Активного листа

▶️ Пример 4. Наилучшая практика

Для активации листа мы рекомендуем использовать имя рабочего листа, а не номер рабочего листа.

Лучше всего назначить рабочий лист объекту, а затем выполнить любую задачу, которую вы хотите выполнить с этим конкретным объектом рабочего листа.

🔔 При работе с несколькими рабочими листами вы должны ссылаться на рабочий лист с точным именем рабочего листа, чтобы правильно обновить свои данные на целевом рабочем листе. Для этого создайте объект Worksheet/Sheets и при необходимости ссылайтесь на лист с объектом, например:

-7

🔔 Как видите, Вам не нужно активировать рабочий лист для работы с каким-либо рабочим листом. Приведенный выше код скопирует значение с ячейки А1 листа 2 и вставит его в ячейку А1 листа 1

🔲 В заключении...Worksheets VS Sheets

Возможно вы заметили, что приведенном выше коде в одном случае использован объект Worksheet, а в другом Sheets.

Опережая ваш вопрос, почему так, и в чем же разница Worksheets и Sheets, отвечаем:

Каждая  рабочая книга состоит из листов. Совокупность всех листов рабочей книги  задается объектом Sheets. Этот объект, задающий коллекцию, представляет все листы рабочей книги независимо от их типа. При программной работе часто полезно иметь дело с подколлекциями коллекции Sheets, содержащими листы только одного определенного типа. Основных типов листов в рабочей книге два - WorkSheet — обычные листы и Chart — листы диаграмм, соответственно имеются и две коллекции для этих типов листов.

Коллекция WorkSheets  является частью коллекции Sheets, - ее элементами являются объекты класса WorkSheet, представляющие рабочие листы - листы электронных таблиц.

Например, у нас есть книга в которой 3 листа, причем лист1 и лист3 - это обычные листы, а лист2 - это лист диаграмм:

-8

➡️ А теперь проведем тест...

Тест №1... Выполним следующий макрос:

-9

Т.к. мы использовали номер в качестве ссылки на рабочий лист Sheets(2).Select означает, что он выберет второй рабочий лист книги:

-10

Т.е все 🆗 мы так и хотели.

Но, напомним, у нас в книге два типа листов: один — обычные листы, а другой — листы диаграмм.

А потому тест №2... Выполним следующий код:

-11

Где мы так же использовали номер в качестве ссылки на рабочий лист, но в этом случае Worksheets(2).Select выберет третий рабочий лист книги, когда мы попросили выбрать второй:

-12

И это потому, что был использован объект Worksheet, а не объект Sheets.

Что подтверждает сказанное выше: объект «Рабочие листы» рассматривает только рабочие листы, а не листы диаграмм.

А потому, мы рекомендуем использовать в коде объект Worksheet, а не объект Sheets, а также более точный способ обращения к листу - это выбор листов по имени, который лучше всего задать в свойствах:

-13

🔔 Если вы задаете имя листа в свойствах и применяете это имя в коде, то:

  • это позволит выбрать точный лис, и не имеет значения, где он находится в книге;
  • не имеет значения, кто изменяет имя рабочего листа, код будет ссылаться на один и тот же лист, пока он не будет изменен в редакторе Visual Basic.

А на этом сегодня все. 👏 Теперь вы знаете как автоматически выбрать или активировать лист для дальнейшего использования в коде VBA.

Мы надеемся, что Вы нашли этот урок полезным ⭐️⭐️⭐️⭐️⭐️

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.

Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.

It's Moskovskaya_Excel на ИЗИ
Excel на ИЗИ — полная коллекция видео на RUTUBE
Excel на ИЗИ

🔔 Наша команда очень заинтересована в составлении качественного и полезного контента, а потому:

✔️ Понравился урок!? - Поблагодарите автора лайком 👍

✔️ Остались вопросы или есть свое решение!? - Оставляйте комментарий 💬

✔️ Требуется иное решение!? - ✏️ Пишите в комментариях 💬 свой вопрос и мы его обязательно рассмотрим в ближайшей теме обзора.

Нам важна Ваша обратная связь 💝 так мы можем анализировать на сколько данный материал был Вам полезен.

🌺🌺🌺 С наилучшими пожеланиями 🤝 команда excel_easy

Если вы нашли предоставленный материал полезным, будем благодарны за вашу поддержку
Если вы нашли предоставленный материал полезным, будем благодарны за вашу поддержку

Наука
7 млн интересуются