Jak korzystać z… Zakończ blokiem w VBA Excel?

Spisie treści:

Anonim

Blok With - End With w VBA służy do poinformowania VBA, że zamierzamy użyć danego obiektu i powinien uwzględniać właściwości danego obiektu tylko wtedy, gdy użyjemy operatora kropki. Zobaczymy przykłady w dalszej części tego artykułu.

Składnia z - Koniec z blokiem

Z [Object] 'Kod do zmiany lub użycia [Object] '-- '-- Zakończ na 

Więc teraz, gdy znamy składnię bloku With - End With, zobaczmy jego zastosowanie.

Przykład Z - Koniec z blokiem

Powiedzmy, że chcę dokonać kilku zmian w zakresie A2:A10. Chcę wybrać ten zakres, zmienić jego kolory wypełnienia, styl czcionki itp. Jak ogólnie mam to zrobić? Prawdopodobnie tak:

Sub test() Range("A1:A10").Select Range("A1:A10").Interior.ColorIndex = 8 Range("A1:A10").Font.Name = "Algierski" Range("A1:A10 ").Font.ColorIndex = 12 Range("A1:A10").Font.Underline = xlUnderlineStyleDouble Range("A1:A10").Copy Range("B1:B10") Range("A1:A10").Clear Napis końcowy 

Powyższe wybiera zakres A1:A10. Zmienia kolor wnętrza z zakresu na kolor o indeksie 8. Zmienia czcionkę na algierską. Zmienia kolor czcionki na indeks koloru 12. Podkreśla tekst w zakresie podwójnymi podkreśleniami. Następnie kopiuje zakres A1:A10 do zakresu B1:B10 tego samego arkusza. W końcu czyści zakres A1:A10.

Można zauważyć, że aby wykonać każdą operację z zakresem A1:A10, za każdym razem musimy to wpisać. Następnie operator kropki uzyskuje dostęp do jego właściwości. Zmniejsza to szybkość przetwarzania i zwiększa obciążenie programistów VBA. Alternatywą do tego jest użycie bloku With: Poniższy kod robi to samo, co powyższy kod, ale szybciej.

Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 .Font.Name = "Algierski" .Font.ColorIndex = 12 .Font.Underline = xlUnderlineStyleDouble .Copy Range("B1:B10" ) .Wyczyść koniec z końcem sub 


Zobaczmy inny przykład.

Jeśli utworzyłeś obiekt poczty programu Outlook, możesz użyć tego obiektu do zainicjowania wszystkich jego właściwości i użycia metod.

Set outMail = Outlook.Application.CreateItem(0) With outMail .To = "abcd.mail.com" 'Obowiązkowe. Tutaj definiujesz docelowy identyfikator poczty… cc = "cc.mail.com" 'opcjonalnie. Identyfikator poczty Cc, jeśli chcesz… BCC = "bcc.mail.com" 'opcjonalnie. Identyfikator poczty UDW, jeśli chcesz… Temat = temat 'powinien mieć. Masaż na ciele pocztowym… Body = msg 'opcjonalnie. Masaż nad treścią poczty… Załączniki.Dodaj "C:/exceltip.com\test.xlsx" .Wyślij Zakończ za pomocą 

Jak to działa?

Cóż, kiedy piszemy With Range("A1:A10"), vba blokuje swoje odniesienie do zakresu obiektu ("A1:A10"). Tak więc za każdym razem, gdy piszemy operator kropki (.), VBA wyświetla listę wszystkich członków tej klasy zakresu, które będą miały wpływ tylko na obiekt Range("A1:A10") lub dowolny wymieniony obiekt. Blokada odwołania jest zwalniana, gdy VBA odczytuje instrukcję End With.

Zagnieżdżone z blokami

Możemy mieć blok w innym bloku. W powyższym przykładzie użyliśmy obiektu zakresu, aby go wybrać. Następnie kilka razy używaliśmy Range.Font do pracy z czcionkami. To znowu się powtarza. Powyższy kod można również napisać w ten sposób:

Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 'Korzystanie z innego With w bloku With With .Font .Name = "Algierski" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With .Copy Zakres("B1:B10") .Wyczyść koniec z końcem Sub 

Wewnętrzna z blokiem powinna odnosić się do obiektu, który jest podczłonkiem obiektu zewnętrznego. Możemy odnosić się do zewnętrznego jako przedmiotu z, a wewnętrznego do jako do dziecka. Kiedy zaczynasz od inner with, obiekt powinien być zapisany z poprzedzającym operatorem kropki.

Gdy jesteś dzieckiem, nie masz dostępu do właściwości specyficznych dla rodziców. Na przykład poniższy kod jest błędny.

Sub test() With Range("A1:A10") .Select .Interior.ColorIndex = 8 'Korzystanie z innego With w bloku With With .Font .Name = "Algierski" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble 'Poniższy kod wygeneruje błąd, ponieważ metody kopiowania i usuwania nie należą do klasy czcionek… Kopiuj zakres("B1:B10") .Wyczyść koniec z końcem z końcem Sub 

W pełni kwalifikowany z blokiem

Jeśli chcę dokonać pewnych zmian czcionką z zakresu A1:A10 arkusza 2 w kodzie zawierającym skoroszyt, powinniśmy użyć w pełni kwalifikowanego bloku.

Poniższe dwa kody będą działać tak samo.

Sub test2() With ThisWorkbook With .Sheets("Sheet2") With .Range("A1:A10") With .Font .Name = "Algierski" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End With End With End With End Pod 
'W pełni kwalifikowana z blokiem Sub test3() With ThisWorkbook.Sheets("Shee2").Range("A1:A10").Font .Name = "Algierski" .ColorIndex = 12 .Underline = xlUnderlineStyleDouble End With End Sub 

Widać różnicę. Więc kiedy wiesz, że będziesz używać wielu metod i właściwości z obiektu, podaj na początku w pełni kwalifikowaną nazwę. Jeśli będziesz używać obiektów podrzędnych, użyj poprzedniego podejścia. Doświadczeni programiści stosują obie metody w odpowiednich sytuacjach.

Więc tak, tak używamy bloku With - End With w VBA. Mam nadzieję, że wyjaśniłem to wystarczająco i ten artykuł pomógł ci zrozumieć koncepcję With - End With. Jeśli masz jakiekolwiek wątpliwości dotyczące tego artykułu lub jakiegokolwiek innego tematu, zapytaj mnie w sekcji komentarzy poniżej. Chętnie Ci pomogę.

Zmienne VBA w Excelu| VBA oznacza Visual Basic for Applications. Jest to język programowania firmy Microsoft. Jest używany z aplikacjami Microsoft Office, takimi jak MSExcel, MS-Word i MS-Access, podczas gdy zmienne VBA są specyficznymi słowami kluczowymi.

Zakres zmiennych Excel VBA| We wszystkich językach programowania mamy specyfikatory dostępu do zmiennych, które definiują, skąd można uzyskać dostęp do zdefiniowanej zmiennej. Excel VBA nie jest wyjątkiem. VBA również ma specyfikatory zakresu.

Argumenty ByRef i ByVal | Gdy argument jest przekazywany jako argument ByRef do innej podrzędnej lub funkcji, wysyłane jest odwołanie do rzeczywistej zmiennej. Wszelkie zmiany wprowadzone w kopii zmiennej zostaną odzwierciedlone w oryginalnym argumencie.

Usuń arkusze bez monitów o potwierdzenie za pomocą VBA w programie Microsoft Excel | Ponieważ usuwasz arkusze za pomocą VBA, wiesz, co robisz. Chcesz powiedzieć programowi Excel, aby nie wyświetlał tego ostrzeżenia i usuwał ten cholerny arkusz.

Dodaj i zapisz nowy skoroszyt za pomocą VBA w programie Microsoft Excel 2016| W tym kodzie najpierw utworzyliśmy odwołanie do obiektu skoroszytu. A następnie zainicjalizowaliśmy go nowym obiektem skoroszytu. Zaletą tego podejścia jest to, że możesz łatwo wykonywać operacje na tym nowym skoroszycie. Jak zapisywanie, zamykanie, usuwanie itp.

Wyświetl komunikat na pasku stanu Excel VBA| Pasek stanu w programie Excel może być używany jako monitor kodu. Gdy twój kod VBA jest długi i wykonujesz kilka zadań za pomocą VBA, często wyłączasz aktualizację ekranu, aby nie widzieć migotania ekranu.

Wyłącz komunikaty ostrzegawcze za pomocą VBA w programie Microsoft Excel 2016| Ten kod nie tylko wyłącza alerty VBA, ale także zwiększa wydajność czasową kodu. Zobaczmy jak.

Popularne artykuły:

50 skrótów Excela, które zwiększą Twoją produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.

Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

LICZ.JEŻELI w Excelu 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby zliczyć określone wartości. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.

Jak korzystać z funkcji SUMIF w programie Excel? | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.