VBA ActiveWorkbook против ThisWorkbook

В этом руководстве мы обсудим разницу между 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 результатКонец подписки

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

wave wave wave wave wave