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 |