В этом руководстве мы обсудим разницу между VBA ActiveWorkbook и ThisWorkbook.
ActiveWorkbook против ThisWorkbook
Важно понимать разницу между ActiveWorkbook и ThisWorkbook в VBA:
ActiveWorkbook - это рабочая книга, которая в настоящее время активна (аналогично тому, как ActiveSheet является текущим активным листом). ThisWorkbook - это книга, в которой хранится код VBA. ThisWorkbook никогда не изменится.
ThisWorkbook
Думайте о ThisWorkbook как об объектной переменной, которая позволяет вам ссылаться на книгу, содержащую текущий исполняемый код.
Этот код отобразит MessageBox с именем ThisWorkbook:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameКонец подписки |
ActiveWorkbook
ActiveWorkbook - это объектная переменная, которая позволяет вам ссылаться на текущую активную книгу.
Этот код отобразит MessageBox с именем ActiveWorkbook:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameКонец подписки |
VBA предполагает ActiveWorkbook
При попытке работать с объектами (например, листами) в ActiveWorkbook вам не нужно явно указывать объект ActiveWorkbook. VBA предполагает, что вы имеете в виду ActiveWorkbook.
Итак, это:
1 | ActiveWorkbook.Sheets ("Sheet1"). Range ("$ A $ 5"). Значение = 1 |
То же самое, что и это:
1 | Таблицы ("Sheet1"). Диапазон ("$ A $ 5"). Значение = 1 |
Новые или открытые книги активны
Каждый раз, когда вы создаете новую книгу или открываете книгу, она становится «активной». Вы можете убедиться в этом сами с помощью этого кода, который добавит книгу и получит имя новой книги:
1234 | Sub Show_ActiveWorkbook_Add ()Рабочие тетради. ДобавитьMsgBox ActiveWorkbook.NameКонец подписки |
После добавления или открытия книги ее можно назначить переменной с помощью объекта ActiveWorkbook. Мы покажем вам, как это сделать, на примерах ниже:
Примеры ThisWorkbook и ActiveWorkbook
Переключить активную книгу
Переключите активную книгу, используя имя книги:
1 | Книги ("Книга1"). Активировать |
Переключите активную книгу, используя порядковый номер рабочего листа (1 - это первый рабочий лист в книге)
1 | Рабочие тетради (1). Активировать |
Сделать ThisWorkbook активным
Сделайте ThisWorkbook (где хранится текущий код) ActiveWorkbook:
1 | ThisWorkbook.Activate |
Установите ActiveWorkbook на переменную
Назначьте ActiveWorkbook переменной объекта книги:
12 | Dim wb As WorkbookУстановить wb = ActiveWorkbook |
Закройте и сохраните активную книгу
Закрывает и сохраняет ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges: = True |
Закройте активную книгу без сохранения
Закрывает ActiveWorkbook без сохранения:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Сохранить как
Выполняет «Сохранить как» активной книги.
123456789 | Sub SaveAsActiveWorkbook ()Тусклый результат как вариантresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Книга Excel с поддержкой макросов (* .xlsm), * .xlsm, Excel Workbook (* .xlsx), * .xlsx")Если результат = Ложь, то ВернутьActiveWorkbook.SaveAs результатКонец подписки |