Аркуші VBA - остаточний посібник

Це найкращий посібник з роботи з аркушами / аркушами в Excel.

Внизу цього посібника ми створили шпаргалку загальних команд для роботи з аркушами.

Аркуші проти Робочі листи

Існує два способи посилання на Аркуші за допомогою VBA. По -перше, з об'єктом "Таблиці":

1 Аркуші ("Аркуш1"). Активуйте

Інший - з об’єктом Worksheets:

1 Робочі аркуші ("Аркуш1"). Активуйте

У 99% випадків ці два об’єкти ідентичні. Насправді, якщо ви шукали в Інтернеті приклади коду VBA, ви, ймовірно, бачили, як використовуються обидва об’єкти. Ось різниця:

Колекція аркушів містить аркуші та аркуші діаграм.

Тому використовуйте Аркуші, якщо хочете включити звичайні робочі аркуші та аркуші діаграм. Використовуйте аркуші, якщо хочете виключити аркуші діаграм. У решті цього посібника ми будемо використовувати аркуші та робочі листи як взаємозамінні.

Посилання на аркуші

Існує кілька різних способів посилання на аркуші:

  • ActiveSheet
  • Назва вкладки аркуша
  • Індексний номер аркуша
  • Назва коду аркуша

ActiveSheet

ActiveSheet - це аркуш, який зараз активний. Іншими словами, якщо ви призупинили свій код і подивились на Excel, видно аркуш. У наведеному нижче прикладі коду відображатиметься вікно повідомлень з назвою ActiveSheet.

1 MsgBox ActiveSheet.Name

Назва аркуша

Ви, мабуть, найбільш знайомі з посиланням на Аркуші за назвою вкладки:

1 Таблиці ("TabName"). Активуйте

Індексний номер аркуша

Номер індексу аркушів - це позиція аркуша в книзі. 1 - це перший аркуш. 2 - це другий аркуш тощо:

1 Аркуші (1). Активуйте

Індексний номер аркуша - останній аркуш у робочій книзі

Щоб отримати посилання на останній аркуш у книзі, використовуйте Sheets.Count, щоб отримати останній номер індексу:

1 Аркуші (Sheets.Count). Активувати

Аркуш «Кодова назва»

Назва коду аркуша - це ім’я об’єкта у VBA:

1 CodeName.Activate

Посилання на аркуші в інших робочих зошитах

Також легко посилатися на аркуші в інших робочих книгах. Для цього вам потрібно використовувати об’єкт Робочі книги:

1 Робочі зошити ("VBA_Examples.xlsm"). Робочі аркуші ("Аркуш1"). Активувати

Важливо: Робоча книга повинна бути відкрита, перш ніж ви зможете посилатися на її аркуші.

Активувати проти Вибрати аркуш

В іншій статті ми обговорюємо все про активацію та вибір аркушів. Коротка версія така:

Після активації аркуша він стає ActiveSheet. Це аркуш, який ви б побачили, якби переглянули програму Excel. Одночасно може бути активовано лише один аркуш.

Активуйте аркуш

1 Аркуші ("Аркуш1"). Активуйте

Коли ви вибираєте аркуш, він також стає ActiveSheet. Однак можна вибрати кілька аркушів одночасно. Якщо одночасно вибирається кілька аркушів, «верхній» аркуш - це ActiveSheet. Однак ви можете перемикати ActiveSheet у вибраних аркушах.

Виберіть аркуш

1 Аркуші ("Аркуш1"). Виберіть

Виберіть кілька аркушів

За допомогою масиву виберіть кілька аркушів одночасно:

1 Робочі аркуші (Масив ("Аркуш2", "Аркуш3")). Виберіть

Змінна аркуша

Призначення аркуша змінній дозволяє посилатися на аркуш за назвою змінної. Це може значно заощадити набір тексту та полегшити читання коду. Існує також багато інших причин, чому ви можете використовувати змінні.

Щоб оголосити змінну аркуша:

1 Затемнити ws як робочий аркуш

Призначте аркуш змінній:

1 Встановити ws = Аркуші ("Аркуш1")

Тепер ви можете посилатися на змінну аркуша у своєму коді:

1 ws.Activate

Перегляньте всі аркуші робочого зошита

Змінні робочого аркуша мають істотне значення, якщо ви хочете прокрутити всі аркуші у книзі. Найпростіший спосіб це зробити:

12345 Затемнити як робочий аркушДля кожного ws у робочих аркушахMsgBox ws.nameНаступний ws

Цей код прокручуватиме всі робочі аркуші у книзі, відображаючи ім’я кожного аркуша у вікні повідомлення. Перегляд усіх аркушів у книзі дуже корисний при блокуванні / розблокуванні або приховуванні / приховуванні кількох аркушів одночасно.

Захист робочого аркуша

Захист робочої книжки

Захист робочої книги блокує книгу від структурних змін, таких як додавання, видалення, переміщення або приховування аркушів.

Ви можете ввімкнути захист книг за допомогою VBA:

1 ActiveWorkbook.Protect Password: = "Пароль"

або вимкніть захист книги:

1 ActiveWorkbook.UnProtect Password: = "Пароль"

Примітка: Ви також можете захистити / зняти захист без пароля, опустивши аргумент Пароль:

1 ActiveWorkbook.Protect

Захист робочого аркуша

Захист на рівні аркуша запобігає змінам окремих аркушів.

Захистити аркуш

1 Робочі аркуші ("Аркуш1"). Захистіть "Пароль"

Зняти захист робочого аркуша

1 Робочі аркуші ("Аркуш1"). Зняти захист "Паролю"

Існує безліч варіантів захисту робочих аркушів (дозволяють зміни форматування, дозволяють користувачеві вставляти рядки тощо). Для запису бажаних налаштувань ми рекомендуємо використовувати Макрореєстратор.

Тут ми детальніше обговорюємо захист аркуша.

Робочий лист Видима властивість

Можливо, ви вже знаєте, що робочі листи можна приховати:

Насправді існує три налаштування видимості аркуша: Видимий, Прихований та Дуже прихований.Будь -який звичайний користувач Excel може приховати приховані аркуші, клацнувши правою кнопкою миші в області вкладки робочого аркуша (показано вище). Дуже приховані аркуші можна приховати лише за допомогою коду VBA або з редактора VBA. Використовуйте такі приклади коду, щоб приховати / показати робочі аркуші:

Показати робочий аркуш

1 Робочі аркуші ("Аркуш1"). Видимий = xlSheetVisible

Сховати робочий аркуш

1 Робочі аркуші ("Аркуш1"). Visible = xlSheetHidden

Дуже приховати аркуш

1 Робочі аркуші ("Аркуш1"). Видимий = xlSheetVeryHidden

Події на рівні аркуша

Події - це тригери, які можуть викликати запуск “Процедур подій”. Наприклад, ви можете викликати запуск коду щоразу, коли змінюється будь -яка клітинка на аркуші або коли активується робочий аркуш.

Процедури події робочого аркуша повинні бути розміщені в модулі робочого аркуша:

Існує чимало подій на робочому аркуші. Щоб побачити повний список, перейдіть до модуля робочого аркуша, виберіть «Робочий лист» у першому спадному меню. Потім виберіть процедуру події з другого розкривного меню, щоб вставити її в модуль.

Робочий лист Активувати подію

Події активації робочого аркуша запускаються кожного разу, коли відкривається аркуш.

123 Приватний робочий аркуш_активувати ()Діапазон ("A1"). ВиберітьEnd Sub

Цей код буде вибирати клітинку A1 (скидання області перегляду у верхній лівий кут аркуша) кожного разу, коли відкривається робочий аркуш.

Подія зміни робочого аркуша

Події зміни робочого аркуша запускаються щоразу, коли змінюється значення комірки на аркуші. Прочитайте наш підручник про події зміни аркуша для отримання додаткової інформації.

Шпаргалка для робочого аркуша

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

Таблиця робочих аркушів VBA

Таблиці робочих аркушів VBA
ОписПриклад коду
Посилання та активація аркушів
Назва вкладкиАркуші ("Введення"). Активуйте
Кодове ім'я VBAАркуш 1. Активуйте
Положення індексуАркуші (1). Активуйте
Виберіть Аркуш
Виберіть АркушАркуші ("Введення"). Виберіть
Установіть значення ЗміннаЗатемнити як робочий аркуш
Встановіть ws = ActiveSheet
Ім'я / ПерейменуватиActiveSheet.Name = "Нове ім'я"
Наступний аркушActiveSheet.Next.Activate
Перегляньте всі аркушіЗатемнити як робочий аркуш
Для кожного ws у робочих аркушах
Msgbox ws.name
Наступний ws
Перебирайте вибрані аркушіЗатемнити як робочий аркуш
Для кожного ws в ActiveWindow.SelectedSheets
MsgBox ws.Name
Наступний ws
Отримайте ActiveSheetMsgBox ActiveSheet.Name
Додати аркушАркуші. Дод
Додайте аркуш і назвуSheets.Add.Name = "Новий аркуш"
Додати аркуш із назвою від коміркиSheets.Add.Name = діапазон ("a3"). Значення
Додати аркуш за іншимТаблиці. Додати після: = Аркуші ("Введення")
Додати аркуш після та назвуSheets.Add (After: = Sheets ("Input")). Name = "NewSheet"
Додайте аркуш до і назвуSheets.Add (Before: = Sheets ("Input")). Name = "NewSheet"
Додати аркуш до кінця робочої книгиТаблиці. Додати після: = Аркуші (Таблиць. Кількість)
Додати аркуш до початку книгиSheets.Add (Before: = Sheets (1)). Name = "FirstSheet"
Додати аркуш до змінноїЗатемнити як робочий аркуш
Встановити ws = Таблиці. Додати
Копіювати робочі аркуші
Перемістити аркуш до кінця робочої книгиАркуші ("Аркуш1"). Перемістити після: = Аркуші (Таблиці.Кількість)
До нового робочого зошитаАркуші ("Аркуш1"). Копіювати
Вибрані аркуші до нової книгиActiveWindow.SelectedSheets.Copy
Перед іншим аркушемАркуші ("Аркуш1"). Скопіювати до: = Аркуші ("Аркуш2")
Перед першим аркушемАркуші ("Аркуш1"). Скопіювати до: = Аркуші (1)
Після останнього аркушаАркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)
Копія та ім’яАркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)
ActiveSheet.Name = "Остання таблиця"
Копіювати та назвати зі значення клітинкиАркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)
ActiveSheet.Name = Діапазон ("A1"). Значення
До іншого робочого зошитаАркуші ("Аркуш1"). Копіювати до: = Робочі зошити ("Приклад.xlsm"). Аркуші (1)
Сховати / показати аркуші
Сховати аркушАркуші ("Аркуш1"). Видимий = Неправда
або
Аркуші ("Аркуш1"). Visible = xlSheetHidden
Показати аркушАркуші ("Аркуш1"). Видимий = Правда
або
Аркуші ("Аркуш1"). Видимий = xlSheetVisible
Дуже приховати аркушАркуші ("Аркуш1"). Видимий = xlSheetVeryHidden
Видалити або очистити аркуші
Видалити аркушАркуші ("Аркуш1"). Видалити
Видалити аркуш (обробка помилок)Увімкнути Помилка Відновити Далі
Аркуші ("Аркуш1"). Видалити
Помилка Перейти до 0
Видалити аркуш (без запиту)Application.DisplayAlerts = Неправда
Аркуші ("Аркуш1"). Видалити
Application.DisplayAlerts = Правда
Очистити аркушАркуші ("Аркуш1"). Клітинки. Очистити
Лише зміст чистого аркушаАркуші ("Аркуш1"). Осередки.ЧистотаВміст
Очистити аркуш Використовуваний діапазонАркуші ("Лист1"). UsedRange.Clear
Захист або зняття захисту аркушів
Зняти захист (без пароля)Аркуші ("Аркуш1"). Зняти захист
Зняти захист (пароль)Аркуші ("Аркуш1"). Зняти захист "Пароль"
Захист (без пароля)Аркуші ("Аркуш1"). Захист
Захистити (пароль)Аркуші ("Аркуш1"). Захистіть "Пароль"
Захистіть, але дозвольте доступ VBAАркуші ("Аркуш1"). Захистіть UserInterfaceOnly: = Істина
Зняти захист з усіх аркушівЗатемнити як робочий аркуш
Для кожного ws у робочих аркушах
ws.Зняти захист "пароля"
Наступний ws
wave wave wave wave wave