VBA ActiveWorkbook a ThisWorkbook

W tym samouczku omówiono różnicę między VBA ActiveWorkbook i ThisWorkbook.

ActiveWorkbook a ThisWorkbook

Ważne jest, aby znać różnicę między ActiveWorkbook i ThisWorkbook w VBA:

ActiveWorkbook to skoroszyt, który jest aktualnie aktywny (podobnie jak ActiveSheet jest aktualnie aktywnym arkuszem). ThisWorkbook to skoroszyt, w którym przechowywany jest kod VBA. Ten zeszyt ćwiczeń nigdy się nie zmieni.

Ten zeszyt

Pomyśl o ThisWorkbook jako o zmiennej obiektowej, która umożliwia odwoływanie się do skoroszytu zawierającego aktualnie uruchomiony kod.

Ten kod wyświetli MessageBox z nazwą ThisWorkbook:

123 Sub Pokaż_Ten Zeszyt()MsgBox ThisWorkbook.NameNapis końcowy

Aktywny zeszyt

ActiveWorkbook to zmienna obiektu, która umożliwia odwoływanie się do aktualnie aktywnego skoroszytu.

Ten kod wyświetli MessageBox z nazwą ActiveWorkbook:

123 Sub Pokaż_Aktywny Skoroszyt()MsgBox ActiveWorkbook.NameNapis końcowy

VBA zakłada ActiveWorkbook

Podczas próby pracy z obiektami (np. Arkusze) w ActiveWorkbook, nie musisz jawnie określać obiektu ActiveWorkbook. VBA założy, że odwołujesz się do ActiveWorkbook.

Więc to:

1 ActiveWorkbook.Sheets("Arkusz1").Range("$A$5").Value = 1

To to samo, co to:

1 Arkusze("Arkusz1").Zakres("$A$5").Wartość = 1

Nowe lub otwarte skoroszyty są aktywne

Za każdym razem, gdy tworzysz nowy skoroszyt lub otwierasz skoroszyt, skoroszyt staje się „aktywny”. Możesz się przekonać za pomocą tego kodu, który doda skoroszyt i pobierze nazwę nowego skoroszytu:

1234 Sub Show_ActiveWorkbook_Add()Skoroszyty.DodajMsgBox ActiveWorkbook.NameNapis końcowy

Po dodaniu lub otwarciu skoroszytu możesz przypisać go do zmiennej za pomocą obiektu ActiveWorkbook. Pokażemy Ci jak na poniższych przykładach:

Przykłady ThisWorkbook i ActiveWorkbook

Przełącz aktywny skoroszyt

Przełącz aktywny skoroszyt przy użyciu nazwy skoroszytu:

1 Skoroszyty("Książka1"). Aktywuj

Przełącz aktywny skoroszyt za pomocą numeru kolejności arkusza (1 to pierwszy arkusz w skoroszycie)

1 Skoroszyty(1).Aktywuj

Ustaw ten skoroszyt jako aktywny

Ustaw ThisWorkbook (gdzie jest przechowywany aktualnie uruchomiony kod) jako ActiveWorkbook:

1 ThisWorkbook.Activate

Ustaw ActiveWorkbook na zmienną

Przypisz ActiveWorkbook do zmiennej obiektu skoroszytu:

12 Dim wb jako skoroszytUstaw wb = Aktywny skoroszyt

Zamknij i zapisz aktywny skoroszyt

Zamyka i zapisuje ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges:=True

Zamknij aktywny skoroszyt bez zapisywania

Zamyka ActiveWorkbook bez zapisywania:

1 ActiveWorkbook.Zamknij ZapiszZmiany:=Fałsz

ActiveWorkbook - Zapisz jako

Wykonuje zapisywanie jako aktywnego skoroszytu.

123456789 Sub Zapisz jako aktywny skoroszyt()Wynik przyciemnienia jako wariantwynik = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter:="skoroszyt programu Excel z obsługą makr (*.xlsm), *.xlsm, skoroszyt programu Excel (*.xlsx), *.xlsx")Jeśli wynik = Fałsz, to zwróćActiveWorkbook.Zapisz jako wynikNapis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave