VBA ActiveWorkbook проти ThisWorkbook

У цьому підручнику буде розглянуто різницю між 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

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

wave wave wave wave wave