VBA ActiveWorkbook срещу ThisWorkbook

Този урок ще обсъди разликата между VBA ActiveWorkbook и ThisWorkbook.

ActiveWorkbook срещу ThisWorkbook

Важно е да знаете разликата между ActiveWorkbook и ThisWorkbook във VBA:

ActiveWorkbook е работната книга, която е активна в момента (подобно на това как ActiveSheet е активният лист в момента). ThisWorkbook е работната книга, където се съхранява VBA кодът. Тази работна книга никога няма да се промени.

Тази работна книга

Мислете за ThisWorkbook като обектна променлива, която ви позволява да се позовавате на работната книга, съдържаща текущия код.

Този код ще покаже MessageBox с това име на работната книга:

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"). Range ("$ A $ 5"). Value = 1

Същото е като това:

1 Листове ("Sheet1"). Диапазон ("$ 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

Затворете и запазете активната работна книга

Затваря и запазва ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = Вярно

Затворете активната работна книга без запазване

Затваря ActiveWorkbook без запазване:

1 ActiveWorkbook.Close SaveChanges: = False

ActiveWorkbook - Запазване като

Извършва запис от активната работна книга.

123456789 Sub SaveAsActiveWorkbook ()Приглушен резултат като вариантрезултат = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Работна книга с активирани макроси на Excel ( *.xlsm), *.xlsm, Работна книга на Excel ( *.xlsx), *.xlsx")Ако резултат = False, тогава се върнетеРезултат от ActiveWorkbook.SaveAsEnd Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave