Excel VBA Immediate Window - 5 niesamowitych sposobów na jego użycie!

„Okno bezpośrednie” może być przydatnym narzędziem podczas pracy z VBA w programie Excel.

Okno bezpośrednie pozwala szybko wykonać takie czynności, jak:

  • Uzyskaj informacje o plikach programu Excel (takie jak liczba arkuszy w skoroszycie lub nazwa skoroszytu)
  • Uzyskaj informacje Debug.Print szybko
  • Uruchom linię kodu w kilka sekund
  • Uruchom makro (lub wywołaj funkcję)
  • Uzyskaj informacje o zmiennych (lub ustaw wartość lub zmienne)

Chociaż nie musisz używać natychmiastowego okna do pracy z VBA w programie Excel, wiedza, jak go dobrze używać, może znacznie zwiększyć wydajność.

W tym samouczku omówię wszystko, co musisz wiedzieć o bezpośrednim oknie i jak najlepiej z niego korzystać (wyjaśnione przykładami).

Zacznijmy!

Co to jest okno bezpośrednie w Excel VBA?

Immediate Window to część edytora VB, której możesz użyć do zrobienia kilku szybkich rzeczy.

Na przykład, jeśli masz skoroszyt z ukrytymi arkuszami i chcesz szybko poznać całkowitą liczbę arkuszy, możesz to zrobić w ciągu kilku sekund w oknie bezpośrednim.

Immediate Window robi o wiele więcej (jak zobaczysz w dalszej części tego samouczka). Ale na początek pomyślmy o natychmiastowym oknie jako narzędziu, które pomoże Ci przyspieszyć pracę w Excel VBA.

Gdzie znaleźć bezpośrednie okno?

Kiedy otworzysz Excel VB-Editor, możesz już zobaczyć bezpośrednie okno jako część edytora VB. A jeśli jeszcze tego nie widzisz, możesz łatwo sprawić, by się pojawił.

Poniżej znajdują się kroki, aby otworzyć edytor VB i wyświetlić okno bezpośrednie:

  1. Kliknij kartę „Programista” na wstążce programu Excel (jeśli nie widzisz karty programista, kliknij tutaj, aby dowiedzieć się, jak ją zdobyć)
  2. W grupie kodu kliknij „Visual Basic”. Otworzy się edytor VB
  3. W edytorze VB kliknij opcję „Widok” w menu
  4. Kliknij okno bezpośrednie. Spowoduje to, że natychmiastowe okno pojawi się w edytorze VB.

Jeśli czujesz się bardziej komfortowo ze skrótami, poniżej znajdziesz niektóre, które przyspieszą powyższe kroki:

  • Aby otworzyć edytor VB - ALT + F11 (działa to nawet, jeśli nie masz karty Deweloper na wstążce)
  • Aby wyświetlić bezpośrednie okno - Kontrola + G (użyj tego edytora VB jest otwarty)

Przykłady użycia okna bezpośredniego w Excel VBA

Teraz, gdy wiesz, gdzie znaleźć bezpośrednie okno, zobaczmy kilka niesamowitych przykładów, w których możesz go używać podczas pracy z Excel VBA.

Uzyskaj informacje o plikach/skoroszytach

„Okno bezpośrednie” to miejsce, w którym możesz zadawać pytania dotyczące zeszytów ćwiczeń i od razu otrzymasz odpowiedź.

Załóżmy na przykład, że masz skoroszyt i chcesz wiedzieć, ile arkuszy znajduje się w skoroszycie, możesz wpisać poniższy kod w bezpośrednim oknie i nacisnąć klawisz Enter.

?ActiveWorkbook.Sheets.Count

To natychmiast pokaże całkowitą liczbę arkuszy w aktywnym skoroszycie.

Może to być przydatne, gdy masz skoroszyt, który zawiera wiele arkuszy i nie możesz go policzyć ręcznie (lub nie chcesz), lub gdy masz skoroszyt, w którym znajdują się ukryte arkusze i chcesz poznać sumę liczyć.

Ten ? (znak zapytania) ma być używany przed zapytaniem, aby VBA mógł zrozumieć, że zadajesz pytanie. Jeśli nie użyjesz tego znaku zapytania, natychmiastowe okno nie poda szczegółów/odpowiedzi.

Teraz jest to naprawdę prosty przykład, w którym Immediate Window dostarcza pewnych informacji i oszczędza czas.

Poniżej kilka przykładów:

Aby uzyskać nazwę aktywnego skoroszytu

?ActiveWorkbook.Name

Aby uzyskać nazwę aktywnego arkusza

?Activesheet.Name

Aby uzyskać ścieżkę skoroszytu (adres, pod którym jest zapisany)

?ActiveWorkbook.Path

Jeśli więc potrzebujesz czegoś o obiekcie (takim jak skoroszyt, arkusze, wykresy, kształty, zakres itp.), możesz użyć okna bezpośredniego, aby szybko uzyskać te informacje.

Uzyskaj informacje o debugowaniu. Drukuj

W Excel VBA Debug.Print służy do natychmiastowego wyświetlania wartości zmiennej w bezpośrednim oknie.

Na przykład poniższy kod natychmiast wyświetli komunikat „Dzień dobry” w bezpośrednim oknie.

Sub DisplayMessage() Debug.Drukuj "Dzień dobry" Koniec Sub

Możesz użyć wiersza Debug.Print w kodzie, aby szybko uzyskać niektóre dane w bezpośrednim oknie lub debugować kod.

Na przykład, jeśli chcesz uzyskać nazwy wszystkich arkuszy w skoroszycie, możesz użyć poniższego kodu:

Sub GetSheetNames() Dla każdego sh In ActiveWorkbook.Sheets Debug.Print sh.Name Next sh End Sub

Powyższy kod przechodzi przez każdy arkusz w aktywnym skoroszycie i podaje nazwę w bezpośrednim oknie.

Debug.Print to przydatna technika debugowania kodu. Na przykład, jeśli uruchamiasz pętlę i chcesz zobaczyć, ile razy pętla została uruchomiona, możesz po prostu umieścić wiersz Debug.Print, który po prostu pokazuje rosnące liczby po uruchomieniu każdej pętli.

Jeśli używasz Debug.Drukuj aby debugować kod, pamiętaj, aby go usunąć, gdy skończysz.

Uruchom makro (lub funkcję)

Chociaż istnieją różne sposoby uruchamiania makra w programie Excel, jednym z szybkich sposobów jest użycie okna bezpośredniego.

Aby uruchomić makro, wystarczy w bezpośrednim oknie wpisać nazwę makra i nacisnąć klawisz Enter (kursor powinien znajdować się na końcu nazwy makra, aby to zadziałało).

Poniżej przykład, gdzie zaraz po wpisaniu nazwy makra w bezpośrednim oknie uruchamia kod (gdzie kod wyświetla komunikat „Dzień dobry” w bezpośrednim oknie).

Może to być przydatne, gdy masz kod i chcesz sprawdzić, czy działa zgodnie z oczekiwaniami, czy nie. Możesz mieć jeden lub więcej wierszy Debug.Print w kodzie i uruchamiać makro z bezpośredniego okna.

Natychmiast pokaże ci wartości w bezpośrednim oknie i możesz sprawdzić, czy wszystko działa dobrze, czy nie.

Możesz także użyć bezpośredniego okna do wykonywania funkcji niestandardowych.

Na przykład w poniższym przykładzie tworzona jest funkcja sprawdzająca, czy liczba jest parzysta, czy nieparzysta. Możesz uruchomić tę funkcję z bezpośredniego okna, wpisując funkcję z jej argumentem. W tym przypadku musisz użyć znaku zapytania, ponieważ pytasz go, aby zwrócił wartość przechowywaną w funkcji.

Wykonaj linię kodu (lub wiele linii kodu)

W oknie natychmiastowym możesz również uruchomić linię kodu (lub wiele linii kodów).

Najlepsze w tym jest to, że możesz po prostu otworzyć bezpośrednie okno, uruchomić kod i zamknąć (w przeciwieństwie do makra, które musisz umieścić w oknie modułu, a następnie wykonać).

Przypadek użycia, w którym może to być przydatne, to sytuacja, w której chcesz szybko odkryć wszystkie arkusze w skoroszycie.

Poniżej znajduje się kod, który możesz umieścić w bezpośrednim oknie, aby odkryć wszystkie arkusze w skoroszycie. Umieść kursor na końcu linii i jak tylko naciśniesz klawisz Enter, odkryje wszystkie arkusze.

Dla każdego arkusza w Thisworkbook.Sheets: Sheet.Visible=True: Następny arkusz

Zauważ, że chociaż wygląda to na pojedynczą linię kodu, składa się z trzech części.

Każda część jest oddzielona : (dwukropkiem), który działa jak łamanie wiersza. Dzięki temu można użyć pętli For Next w bezpośrednim oknie, aby przejść przez każdy arkusz i zmienić właściwość widoczną na TRUE (co powoduje odkrycie dowolnego ukrytego arkusza).

Uzyskaj wartości zmiennych

Gdy zaczniesz tworzyć złożone kody VBA, będziesz musiał polegać na zmiennych, aby wykonać zadanie.

Zmienna to coś, co przechowuje wartość i ta wartość może się zmienić, gdy kod jest uruchomiony. Możesz użyć bezpośredniego okna, aby sprawdzić te wartości zmiennych.

Poniżej znajduje się prosty kod, który daje sumę pierwszych 10 dodatnich liczb całkowitych i pokazuje wynik w bezpośrednim oknie.

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 do 10 k = k + i Next i Debug.Print i, k End Sub

Jak tylko uruchomisz ten kod, zobaczysz poniższy wynik w bezpośrednim oknie. To natychmiast informuje, że kod działa poprawnie i daje oczekiwany wynik.

Jeśli nie daje oczekiwanych rezultatów, możesz debugować kod.

Wiele osób korzysta z okienka komunikatu podczas debugowania kodu. Chociaż działa dobrze, uważam, że jest to trochę uciążliwe, ponieważ prowadzi mnie do skoroszytu programu Excel i wyświetla okno komunikatu. Z drugiej strony, używanie natychmiastowego okna do debugowania jest dużo płynniejsze i utrzymuje mnie w samym edytorze Visual Basic.

Uwaga: jeśli pracujesz ze złożonym kodem i masz wiele zmiennych, które musisz śledzić, lepiej użyć okna obserwacji. Watch Window pozwala dodać zmienną, a następnie zobaczyć, jak ta zmienna zmienia się w czasie rzeczywistym (lub podczas przechodzenia przez kod).

Ustaw wartość zmiennej podczas debugowania

Jest to trochę zaawansowane użycie okna bezpośredniego, ale jeśli go użyjesz, może to być ogromna oszczędność czasu podczas debugowania kodu.

Możesz użyć bezpośredniego okna, aby ustawić wartość zmiennej podczas uruchamiania kodu w trybie debugowania (gdzie ustawiasz punkt przerwania, aby kod nie wykonał się w pełni - ale do określonej linii).

Na przykład, jeśli masz pętlę, która działa 10 razy i chcesz sprawdzić, co się stanie, gdy pętla zostanie uruchomiona po raz ósmy, nie musisz przechodzić przez pętlę siedem razy, aby dostać się do ósmej iteracji. Możesz po prostu dodać punkt przerwania przed pętlą i zmienić zmienną pętli na 8. Teraz, gdy uruchomisz kod, pokaże ci, co się stanie, gdy pętle zostaną uruchomione po raz ósmy.

Staje się to o wiele bardziej przydatne, gdy piszesz złożony kod i chcesz debugować określone pętle.

Załóżmy, że masz kod, jak pokazano poniżej:

Sub UnhideSheets() For i = 1 To Worksheets.Count Debug.Print Sheets(i).Name Next i End Sub

Powyższy kod po prostu wyświetla nazwy arkuszy wszystkich arkuszy w skoroszycie w bezpośrednim oknie.

Jeśli nie chcesz wymieniać nazw wszystkich arkuszy, a tylko arkuszy po 10. arkuszu, możesz umieścić punkt przerwania w drugim wierszu pętli (aby nic po tym wierszu nie zostało wykonane), a następnie zmienić zmienna „i” do 11.

Aby zmienić nazwę zmiennej w oknie bezpośrednim, wprowadź następującą linię:

i=11

Zapewni to, że pierwsze 10 razy pętli zostanie zignorowanych, a wartość zmiennej zostanie ustawiona na 11.

Dokowanie/oddokowanie okna bezpośredniego

Możesz mieć natychmiastowe okno zadokowane w edytorze VB - co oznacza, że ​​pozostaje ono w jednym miejscu w edytorze VB i przesuwa się wraz z nim.

Można go również oddokować, co oznacza, że ​​jest niezależny od edytora VB i można go przenosić jako samodzielne okno.

Poniżej znajduje się sposób zmiany ustawień dokowania dla okna bezpośredniego:

  1. Kliknij opcję Narzędzia w menu w Edytorze VB
  2. Kliknij „Opcje”
  3. W oknie dialogowym Opcje kliknij ostatnią kartę - Dokowanie
  4. Zaznacz opcję Immediate Window, aby uczynić ją dokowalną i odznacz ją, aby uniemożliwić dokowanie.
  5. Kliknij OK

Alternatywnie, jeśli bezpośrednie okno jest widoczne, możesz również kliknąć prawym przyciskiem myszy i zmienić jego właściwość dokowalną.

Dokowalny oznacza, że ​​bezpośrednie okno stałoby się częścią istniejącego okna, umieszczając się w określonych miejscach, na przykład po lewej stronie okna lub na dole. Dzięki temu zadokowane okna mogą się przesuwać i zmieniać razem.

Natychmiastowe okno nie jest wyświetlane - oto kilka sposobów, aby je uzyskać

Może być wiele przyczyn takiego stanu rzeczy.

Najczęstszym powodem, dla którego nie widzisz natychmiastowego okna, jest to, że nie jest ono widoczne. Może nie być domyślnie widoczny i aby się pojawił, musisz przejść do opcji Widok w menu i kliknąć opcję Immediate Window. Dzięki temu będzie on widoczny w edytorze VB.

Możesz także użyć klawiszy Control + G, aby wyświetlić natychmiastowe okno. Użyj tego skrótu klawiaturowego, gdy jesteś w edytorze VB.

Innym powodem, dla którego możesz nie widzieć bezpośredniego okna, jest to, że zostało zminimalizowane, jest teraz tak zamknięte, że nie możesz go zobaczyć (jak podano tutaj). Po prostu wykonaj szybkie skanowanie i sprawdź, czy gdzieś czai się mały niebiesko-czerwony kwadrat. Możesz najechać na niego kursorem, a zobaczysz opcję zmiany jego rozmiaru.

Jeśli w ogóle nie widzisz bezpośredniego okna, oto coś, co działało dla wielu osób (często dzieje się to z powodu zmian rozdzielczości ekranu):

  1. Otwórz edytor VB
  2. Naciśnij Ctrl-G, aby skupić się na bezpośrednim oknie (lub kliknij opcję Widok w menu, a następnie kliknij bezpośrednie okno)
  3. Przytrzymaj klawisz ALT, a następnie naciśnij klawisz spacji. Spowoduje to wyświetlenie opcji rozwijanych dla bezpośredniego okna.
  4. Naciśnij M (dla ruchu)
  5. Użyj klawiszy strzałek, aby przesunąć okno
  6. Gdy zorientujesz się, gdzie to jest, zwiększ go

Dostałem to z forum tutaj i zauważyłem, że to samo sugerowano jako rozwiązanie dla natychmiastowego okna VBA, które nie pojawia się.

Inną rzeczą, którą możesz spróbować, jest odblokowanie okna bezpośredniego (przejdź do Narzędzia -> Opcje -> Dokowanie i odznacz opcję okna bezpośredniego). To zadziałało dla niektórych osób.

Możesz również polubić następujące artykuły:

  • Skoroszyt makr osobistych programu Excel | Zapisz i używaj makr we wszystkich skoroszytach
  • Pętle Excel VBA: For Next, Do While, Do Do, For Each (z przykładami)
  • Praca z arkuszami roboczymi za pomocą Excel VBA
  • Tworzenie funkcji zdefiniowanej przez użytkownika (UDF) w Excel VBA

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

wave wave wave wave wave