W tym artykule pokażemy, jak używać With i End With w VBA
Excel daje nam możliwość nauki VBA poprzez nagrywanie makr. Te makra rejestrują dosłownie wszystko, co robimy na ekranie i konwertują akcje na kod VBA. Możemy wtedy przeanalizować ten kod i uczyć się z niego.
Kiedy nagrywamy makro w VBA, a co najważniejsze, gdy zmieniamy format komórek, makro najczęściej używa w swoim nagraniu składni With… End With. Zrozumienie, co one oznaczają i są używane, jest ważną częścią VBA.
Nagrywanie makra
Aby nagrać makro w programie Excel, w Wstążka, Wybierz Widok > Makro > Nagraj makro.
LUB
Deweloper > Nagraj makro
Uwaga: Jeśli nie widzisz Wstążki programisty, musisz ją włączyć. Kliknij TUTAJ, aby dowiedzieć się, jak to zrobić.
Wpisz nazwę makra i kliknij OK.
Zaznacz niektóre komórki, a następnie sformatuj je jako pogrubienie, zmień kolor na czerwony i zmień rozmiar czcionki. Następnie kliknij Zatrzymaj w lewym dolnym rogu ekranu, aby zatrzymać nagrywanie makra.
Składnia instrukcji WITH
Aby wyświetlić/edytować nagrane makro: Na Wstążce wybierz Widok > Makra > Wyświetl makra. Wybierz właśnie nagrane makro, a następnie kliknij Edytować.
LUB
Na Wstążce wybierz Deweloper > Visual Basic aby przejść do okna VBE.
Nagrane makro może wyglądać podobnie do poniższego przykładu
123456789 | Sub zmakro()Zakres ("A2:C10").WybierzZaznaczenie.Czcionka.Pogrubienie = PrawdaWybór.Rozmiar.Czcionki = 12Z zaznaczeniem. Czcionka.Kolor = -16776961.OdcieńIOdcień = 0Kończyć zNapis końcowy |
Po pierwsze, wybraliśmy zakres A2:C10.
Następnie ustawiliśmy pogrubienie na true, a rozmiar czcionki na 12. Zauważ, że kod „Selection.Font” jest powtarzany dla tych wierszy.
Makro zarejestrowało nam wtedy zmianę koloru tekstu - zauważ, że tym razem zaznaczenie. Czcionka ma Z przed nim, a dwie zmieniane właściwości (kolor i odcień) mają przed sobą kropkę (.). Obszar kodu jest następnie uzupełniany za pomocą KOŃCZYĆ Z.
Aby uprościć ten kod, możemy przenieść Bold i Size, aby znalazły się w instrukcji WITH, a tym samym usunąć potrzebę powtarzania słowa Selection.
123456789 | Sub zmakro()Zakres ("A2:C10").WybierzZ zaznaczeniem. Czcionka.Pogrubienie = Prawda.Rozmiar = 12.Kolor = -16776961.OdcieńIOdcień = 0Kończyć zNapis końcowy |
Składnia instrukcji WITH… END WITH jest zatem bardzo prosta:
123 | Z Obiektem„właściwości do formatowania/zmiany”KOŃCZYĆ Z |
Mogliśmy zmienić kod w inny sposób:
1234567 | Sub UsuńZ()Zakres ("A2:C10").WybierzZaznaczenie.Czcionka.Pogrubienie = PrawdaWybór.Rozmiar.Czcionki = 12Zaznaczenie.Kolor czcionki = -16776961Zaznaczenie.Czcionka.TintAndShade = 0Napis końcowy |
W powyższym przykładzie dodaliśmy słowa Selection.Font do każdej linii kodu. Dlatego wielokrotnie odwoływaliśmy się w kodzie do obiektu Selection.Font.
Jednak użycie instrukcji WITH oznacza, że musimy odwołać się do tego obiektu tylko raz w kodzie. Jest to czystszy sposób kodowania - mówi VBA, aby zaczynał się od Z i kończył na KONIEC Z - kod do uruchomienia jest zawarty w tych 2 słowach. Sprawia, że makro działa szybciej i wydajniej (szczególnie w przypadku dłuższych makr) i dodaje strukturę do kodu.