У цьому підручнику буде розглянуто різницю між VBA ActiveWorkbook та ThisWorkbook.
ActiveWorkbook проти ThisWorkbook
Важливо знати різницю між ActiveWorkbook та ThisWorkbook у VBA:
ActiveWorkbook - це робоча книга, яка наразі є активною (подібно до того, як ActiveSheet - це поточний активний аркуш). Ця робоча книга - це книга, де зберігається код VBA. Ця робоча книга ніколи не зміниться.
Ця робоча книга
Подумайте про ThisWorkbook як про об’єктну змінну, яка дозволяє посилатися на книгу, що містить поточний код.
Цей код відображатиме MessageBox з назвою ThisWorkbook:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub |
ActiveWorkbook
ActiveWorkbook - це об'єктна змінна, яка дозволяє посилатися на поточну активну книгу.
Цей код відображатиме MessageBox з назвою ActiveWorkbook:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub |
VBA передбачає ActiveWorkbook
Під час спроби працювати з об’єктами (наприклад, аркушами) у ActiveWorkbook вам не потрібно чітко вказувати об’єкт ActiveWorkbook. VBA припустить, що ви маєте на увазі книгу ActiveWorkbook.
Отже це:
1 | ActiveWorkbook.Sheets ("Sheet1"). Діапазон ("$ A $ 5"). Значення = 1 |
Це те саме:
1 | Аркуші ("Аркуш1"). Діапазон ("$ A $ 5"). Значення = 1 |
Нові або відкриті книги є активними
Щоразу, коли ви створюєте нову книгу або відкриваєте книгу, вона стає «Активною». Ви можете переконатися в цьому за допомогою цього коду, який додасть книгу та отримає назву нової книги:
1234 | Sub Show_ActiveWorkbook_Add ()Робочі зошити.ДодатиMsgBox ActiveWorkbook.NameEnd Sub |
Після додавання або відкриття книги ви можете призначити її змінній за допомогою об’єкта ActiveWorkbook. Ми покажемо вам, як у наведених нижче прикладах:
Приклади цієї робочої книги та активної робочої книги
Змінити активну книгу
Змінити активну книгу за допомогою назви книги:
1 | Робочі зошити ("Книга1"). Активуйте |
Змініть активну книгу, використовуючи номер замовлення на аркуші (1 - це перший аркуш у книзі)
1 | Робочі зошити (1). Активуйте |
Зробіть цю робочу книгу активною
Зробіть цю книгу (де зберігається поточний код) ActiveWorkbook:
1 | ThisWorkbook.Activate |
Встановіть для ActiveWorkbook значення змінної
Призначте ActiveWorkbook змінній об’єкта книги:
12 | Dim wb Як робочий зошитВстановити wb = ActiveWorkbook |
Закрийте та збережіть активну книгу
Закриває та зберігає книгу ActiveWork:
1 | ActiveWorkbook.Close SaveChanges: = True |
Закрийте активну книгу без збереження
Закриває книгу ActiveWorkbook без збереження:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Зберегти як
Виконує збереження активної книги.
123456789 | Sub SaveAsActiveWorkbook ()Неяскравий результат як варіантresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Робоча книга Excel з підтримкою макросів ( *.xlsm), *.xlsm, Робоча книга Excel ( *.xlsx), *.xlsx")Якщо результат = Неправда, повернітьсяРезультат ActiveWorkbook. ЗберегтиEnd Sub |