Konstrukcje kontroli Visual Basic. Oświadczenia branżowe VBA: łatwy wybór, kiedy użyć oświadczenia End If

Operator warunkowy

Operator warunkowy VBA pozwala sprawdzić określony warunek i, w zależności od wyników sprawdzenia, wykonać tę lub inną akcję. Operator warunkowy jest więc sposobem na rozgałęzienie procesu obliczeniowego.

W VBA Istnieją 2 rodzaje operatorów warunkowych: liniowy i blokowy.

1. Liniowy operator warunkowy służy do wykonania dowolnego pojedynczego operatora, jeśli jakiś warunek jest prawdziwy.

Konstrukcja składniowa operatora liniowego ma dwie formy: niealternatywną, alternatywną.

Struktura niealternatywnego operatora warunkowego (wersja skrócona):

Jeśli<условие>Następnie<оператор 1>

Struktura alternatywnej instrukcji warunkowej (pełna wersja):

Jeśli<условие>Następnie<оператор 1>W przeciwnym razie<оператор 2>

gdzie

Jeśli , wtedy , inaczej - słowa zastrzeżone (jeśli, to inaczej);

<условие>- dowolne wyrażenie typu logicznego;

<оператор 1>, <оператор 2>- dowolnych operatorów językowych VBA.

Stanowisko. Wyrażenie warunkowe jest oceniane jako pierwsze.<условие>. Jeśli wynik to Prawdziwe (prawda), wtedy<оператор 1>, ale<оператор 2>pominięto. Jeśli wynik to Fałszywe (fałsz) wręcz przeciwnie<оператор 1>pominięto i wykonano<оператор 2>.

2. Operator warunkowy bloku jest używany, gdy warunek jest prawdziwy, konieczne jest wykonanie kilku instrukcji programu (blok instrukcji). Operator blokowy ma dwie formy: niealternatywną, alternatywną.

Struktura niealternatywnego operatora bloku (wersja skrócona))

Jeśli<условие>Następnie

<оператор1>

<оператор2>

…………….

<оператор n >

Zakończ, jeśli

gdzie

Zakończ, jeśli - wskazuje koniec bloku instrukcji Jeśli .

Struktura instrukcji bloku alternatywnego:

Jeśli<условие>Następnie

<оператор1>

<оператор2>

…………….

<оператор n >

W przeciwnym razie

<оператор1>

<оператор2>

…………….

<оператор n >

Zakończ, jeśli

Przykład 1

Sformułowanie problemu. Utwórz w standardowym module niestandardową procedurę obliczania równania postaci ax2 + bx + c = 0.

1. Dane początkowe:

a , b , c  R

Wynik: x1, x2  R.

2. Wpisz w standardowym module projektu następującą procedurę użytkownika:

Prywatne poziomowanie podrzędne()

a = InputBox("a=", a)

b = Pole Wprowadzania("b=", b)

c = Pole Wprowadzania("c=", c)

d=b^2 - 4*a*c

Jeśli d >= 0 Wtedy

x1 = (-b + Sqr(d)) / (2 * a)

x2 = (-b - Sqr(d)) / (2 * a)

Skrzynka wiadomości (x1)

Skrzynka wiadomości (x2)

W przeciwnym razie

MsgBox("Brak rozwiązań")

Zakończ, jeśli

napis końcowy

Alternatywna instrukcja blokowa Jeśli Jest używany w tych przypadkach, gdy warunek jest spełniony, konieczne jest wykonanie jednego zestawu instrukcji programu, a jeśli nie, innego.

Oświadczenia IF mogą być zagnieżdżone w sobie. To zagnieżdżenie instrukcji jest przydatne, jeśli chcesz przetestować warunek pod innym warunkiem, który jest prawdziwy.

Zagnieżdżony format wyciągu Jeśli:

Jeśli<условие1>Następnie

Jeśli<условие2>Następnie

<оператор1>

<оператор2>

…………….

<оператор n >

W przeciwnym razie

<оператор1>

<оператор2>

…………….

< оператор n>

Zakończ, jeśli

Zakończ, jeśli

Przykład 2

Sformułowanie problemu. Utwórz niestandardową funkcję w standardowym module, aby znaleźć maksimum spośród trzech podanych liczb y 1 \u003d a + 2 * b; y 2 \u003d a * b + c; y 3 = c 2 + 1.

Technologia realizacji zadań:

1. Dane początkowe:

a , b , c  R

Wynik: Max  R.

2. Wpisz w standardowym module projektu następującą funkcję zdefiniowaną przez użytkownika:

Funkcja y (a,b,c)

y1 = a+2*b

y2 = a*b+c

y3 = c^2+1

Jeśli y1 > y2 Wtedy

Jeśli y1 > y3 Wtedy y = y1 W przeciwnym razie y = y3

W przeciwnym razie

Jeśli y2 > y3 Wtedy y = y2 W przeciwnym razie y = y3

Zakończ, jeśli

funkcja zakończenia

3. Oblicz pierwiastki równania kwadratowego z dowolnymi danymi początkowymi.

Podczas korzystania z zagnieżdżonych instrukcji Jeśli Ważne jest, aby nie mylić opcji łączenia warunków. Musisz pamiętać o zasadzie: alternatywa W przeciwnym razie jest uważany za należący do najbliższego operatora Jeśli nie mając oddziału W przeciwnym razie.

W VBA Zaprojektowany do pracy z wieloma operatorami Jeśli . Operatory te są używane w przypadkach, gdy konieczne jest uwzględnienie kilku innych warunków oprócz pierwotnego. Po to jest konstrukcja: Jeśli… Wtedy… Inaczej . W przeciwieństwie do instrukcji zagnieżdżonych, konstrukcja z wieloma instrukcjami Jeśli pozwala sprawdzić dodatkowy warunek, jeśli pierwotny warunek przyjmuje wartość Fałszywe .

Format nagrywania:

Jeśli<условие1>Następnie

<оператор1>

W przeciwnym razie<условие2>Następnie

<оператор2>

W przeciwnym razie

<.оператор3>

EndIf

Przykład 3

Sformułowanie problemu. Kierownik sprzedaży musi opracować funkcję, która pozwoli mu naliczać prowizje. Procent prowizji uzależniony jest od ilości sprzedanego towaru i naliczany jest zgodnie z następującą zasadą przedstawioną w tabeli 15.

Zasady naliczania prowizji

Tygodniowa wielkość sprzedaży, pocierać.

Zamawiać, %

0 do 9999

Od 10000 do 19999

Od 20000 do 39999

Ponad 40000

Technologia realizacji zadań:

1. Dane początkowe:

Sprzedaż  Z .

Wynik: Prowizja R.

2. Zbuduj niestandardową funkcję naliczania prowizji w standardowym module:

Prowizja Funkcja (Sprzedaż)

Jeśli sprzedaż<= 9999 Then

Prowizja = Sprzedaż * 0,08

W przeciwnym razie sprzedaż<= 19999 Then

Prowizja = Sprzedaż * 0,1

W przeciwnym razie sprzedaż<= 39999 Then

Prowizja = Sprzedaż * 0,12

W przeciwnym razie

Prowizje = Sprzedaż * 0,14

Zakończ, jeśli

funkcja zakończenia

3. Oblicz.

W języku Visual Basic for Application (VBA) istnieje kilka sposobów zmiany kolejności wykonywania instrukcji. Struktury kontrolne w VBA są pod wieloma względami podobne do tych w innych językach programowania.

Podstawowe struktury kontrolne VBA:

  • Jeśli to inaczej „Zakończ, jeśli
  • W następnym
  • Podczas gdy Wend
  • Wykonaj pętlę
  • Wybierz sprawę „Zakończ wybór
  • Dla każdego następnego

    Instrukcja sterująca, jeśli to inaczej „Koniec, jeśli
    Instrukcja ta zmienia kolejność wykonywania instrukcji w zależności od wyników testowania danego warunku (lub zbioru warunków)

    Przykład:

    Podtest, jeśli to()

    iData = "paszulka"

    Jeśli iData = „Excel” Wtedy
    MsgBox "Nigdy nie zobaczysz tej wiadomości!!!"
    ElseIf iData = "Biuro" Then
    MsgBox "Przepraszamy, nie zobaczysz też tej wiadomości!!!"
    W przeciwnym razie
    MsgBox "Ta wiadomość i tak pojawi się", iData
    Zakończ, jeśli

    Uwagi:
    Jeśli- słowo kluczowe wskazujące początek sprawdzania
    iData- zmienna, której wartość będzie sprawdzana
    Następnie- słowo kluczowe oznaczające koniec kontroli
    MsgBox- wiadomość
    W przeciwnym razie- słowo kluczowe wskazujące początek nowego czeku
    Następnie- słowo kluczowe oznaczające koniec dodatkowej kontroli
    MsgBox- wiadomość
    W przeciwnym razie- słowo kluczowe oznaczające koniec bloku instrukcji wykonanych z pozytywnym wynikiem sprawdzenia oraz początek bloku instrukcji wykonanych z wynikiem negatywnym.
    MsgBox- wiadomość
    Zakończ, jeśli

    W instrukcji If Then Else „End If” słowa kluczowe W przeciwnym razie I W przeciwnym razie są opcjonalne.

    Do następnego oświadczenia kontrolnego
    Ta instrukcja pozwala wykonać określone czynności żądaną liczbę razy. Takie instrukcje są zwykle nazywane pętlami.

    Przykład:

    Test podrzędny dla następnego()

    Dla iCount = 1 do 100 Krok 2
    ja = ja + 1
    Następny

    Uwagi:
    Do
    liczę- zmienna określająca ilość powtórzeń pętli.
    1 - wartość początkowa licznika
    W celu- słowo kluczowe oddzielające wartość początkową i końcową licznika
    100 - wartość końcowa licznika
    krok- słowo kluczowe określające krok licznika
    2 - krok licznika (liczba)
    Następny- słowo kluczowe, po osiągnięciu którego wartość licznika zmienia się o wartość kroku, po czym sterowanie ponownie przechodzi na początek pętli.
    MsgBox

    W instrukcji For Next słowo kluczowe krok jest opcjonalne. Jeśli go nie ma, krok wykonania licznika będzie równy 1.

    ważny Krok licznika musi być liczbą. Jeśli krok licznika zostanie określony jako liczba ujemna, to wartość licznika będzie się zmniejszać z każdym cyklem.

    Przykład z odliczaniem:

    Test podrzędnyDlaNastępnego2()

    Dla iCount = 300 do 1 Krok -3
    ja = ja + 1
    Jeśli iCount = 153, to wyjdź po
    Następny iCount

    MsgBox "Liczba powtórzeń: " & i

    Zwróć uwagę na:
    Jeśli iCount = 153 Następnie- w tym kodzie VBA zastosowaliśmy instrukcję If Then Else, którą już znamy
    Wyjdź dla
    Następny iCount- w kodzie znajduje się zmienna (licznik), która znajduje się po słowie kluczowym. Podobna składnia jest z reguły używana do wizualnego określenia końca pętli, jeśli w kodzie VBA jest wiele podobnych instrukcji.

    Podczas gdy oświadczenie kontrolne Wend
    Ta instrukcja umożliwia wykonanie określonych czynności, o ile spełniony jest określony warunek.

    Przykład:

    Podtest podczas Wend()

    Podczas gdy iCount iCount = iCount + 1
    Wend

    Uwagi:
    Dopóki- słowo kluczowe oznaczające początek cyklu
    iCount - warunek, pod jakim ta instrukcja zostanie wykonana
    Wend
    MsgBox- komunikat o ilości powtórzeń

    Wykonaj instrukcję kontroli pętli
    Ta instrukcja pozwala na wykonywanie określonych czynności nie tylko tak długo, jak spełniony jest określony warunek, ale na odwrót, dopóki nie zostanie spełniony określony warunek.

    Przykład:

    PodtestDoLoop()

    Rób dopóki iCount >= 100
    iCount = iCount + 1
    pętla

    MsgBox "Liczba powtórzeń: " & iCount

    Uwagi:
    Zrobić- słowo kluczowe oznaczające początek cyklu
    Aż do- słowo kluczowe wskazujące na obecność schorzenia
    iCount >= 100- warunek, pod jakim ta instrukcja zostanie wykonana
    pętla- słowo kluczowe oznaczające koniec cyklu
    MsgBox- komunikat o ilości powtórzeń

    PodtestDoLoop2()

    Zrobić
    iCount = iCount + 1
    Jeśli iCount = 50, to zakończ Wykonaj
    Pętla do iCount = 100

    MsgBox "Liczba powtórzeń: " & iCount

    Zwróć uwagę na:
    Jeśli Liczba = 50 Następnie- w tym kodzie VBA ponownie zastosowaliśmy znaną nam już instrukcję If Then Else
    Wyjście Wykonaj- instrukcja oznaczająca wczesne wyjście z pętli
    iCount = 100- warunek, pod jakim ta instrukcja zostanie wykonana

    Notatka:
    Warunek podany na końcu pętli gwarantuje, że zostanie ona wykonana przynajmniej raz. Uważaj na instrukcje While Wend, Do Loop, ponieważ jeśli źle ustawisz warunek, możesz uzyskać prawie perpetuum mobile.

    Instrukcja sterująca Wybierz przypadek „Zakończ wybór
    Instrukcja ta wykonuje jeden z kilku fragmentów kodu w zależności od wyniku wartości zmiennej lub wyrażenia.

    Przykład:

    PodtestWybierz przypadek()

    Wybierz przypadek inumeryczny
    Przypadek 1

    Przypadek 2, 5
    MsgBox "Nie powinieneś widzieć tego komunikatu"
    Przypadek 10 do 13
    MsgBox "Nie powinieneś widzieć tego komunikatu"
    Sprawa jest > 14
    MsgBox "To jest wiadomość, którą powinieneś zobaczyć"
    Przypadek inny
    MsgBox "Ten komunikat pojawi się, jeśli zmienna to End Select

    Uwagi:
    Wybierz przypadek
    inumeryczny- zmienna lub wyrażenie, którego wartość determinuje wybór fragmentu kodu VBA do wykonania
    Przypadek 1- pierwsza wartość do porównania.
    Jeżeli wartość zmiennej do niej pasuje, to zostanie wykonany fragment kodu następujący po Case, ale przed kolejnym kluczem Case, wtedy instrukcja zakończy swoją pracę. W przeciwnym razie sprawdzanie będzie kontynuowane.
    Przypadek 2, 5- druga wartość opcji.
    Przypadek 10 do 13- trzecia wartość opcji.
    Sprawa jest > 14- czwarta opcja.
    MsgBox- komunikat do wyświetlenia w tym przypadku
    Przypadek inny- słowa kluczowe oznaczające wykonanie kodu, jeśli żadna z poprzednich opcji nie pasuje.
    Koniec Wybierz- słowo kluczowe oznaczające koniec instrukcji

    W instrukcji Select Case „End Select słowo kluczowe Przypadek inny jest opcjonalne.

    Dla każdej następnej instrukcji kontrolnej
    Ta instrukcja umożliwia wykonanie określonych czynności z każdym obiektem rodziny lub elementem tablicy.

    Przykład z obiektem Range:

    Test podrzędny dla każdego następnego zakresu()


    ja = ja + 1
    iCell.Value = "(!LANG:Komórka #" & i !}
    Następny

    MsgBox "Liczba komórek: " & i

    Uwagi:
    Dla każdego- słowa kluczowe wskazujące początek instrukcji
    iCell- zmienna, do której przypisane są wartości elementów grupy (tablicy lub rodziny), aby pracować z elementami tablicy, zmienna musi należeć do typu Variant.
    w- słowo kluczowe oddzielające zmienną od grupy
    Zakres("A1:C5")- grupa, tj. tablica lub rodzina obiektów.Liczba iteracji pętli zależy od liczby elementów w grupie.Przy pierwszym wykonaniu pętli zmiennej przypisywana jest wartość pierwszego elementu grupy, a następnie wszystkie kolejne.
    Następny- słowo kluczowe, po osiągnięciu którego kontrolka ponownie przechodzi na początek pętli.
    MsgBox- komunikat o liczbie elementów grupy.

    W tym przypadku użycie podobnej liczby komórek w obiekcie Range nie jest najlepszym sposobem, ponieważ ten obiekt ma właściwość, która znacznie lepiej poradzi sobie z tym zadaniem: Obiekt Range: jego właściwości i metody


  • Przykład manipulowania obiektem Range:

    Podtest dla każdego następnego zakresu zmian()

    Dla każdej komórki iCell w zakresie ("A1:C5")

    i = i + 1: iCell.Value = i

    Jeśli iCell.Value 5 Wtedy
    iCell.Rozmiar.Czcionki = 15
    iCell.Interior.ColorIndex = 50
    InaczejJeżeli iCell.Value = 13 Lub iCell.Value = 5 Wtedy
    iCell.Rozmiar.Czcionki = 20
    iCell.Interior.ColorIndex = 3
    W przeciwnym razie
    iCell.Wyczyść
    Zakończ, jeśli

    Zwróć uwagę na:
    - w tym kodzie VBA, aby sprawdzić wartości w komórce, zastosowaliśmy znaną nam już instrukcję If Then Else.
    - w zależności od tego, który warunek przeszedł test, wykonywany jest określony fragment kodu, który wykorzystuje różne właściwości obiektu Range.

    Przykład z rodziną Worksheets:

    Test podrzędny dla każdego następnego arkusza()

    Dla każdego iList w arkuszach roboczych
    ja = ja + 1
    iNameList = iNameList & Chr(10) & iList.Name
    Następny

    MsgBox "Liczba arkuszy roboczych: " & i & Chr(10) & _
    "Nazwy arkuszy: " & iNameList

    W tym przypadku użycie podobnej liczby arkuszy nie jest najlepszym sposobem, ponieważ ten obiekt ma również właściwość, która znacznie lepiej poradzi sobie z tym zadaniem.

    Podstawowe operatory języka VBA

    Komentarze (0)

    3.1. Zasady nagrywania operatora

    Pisząc operatorów, musisz przestrzegać następujących zasad:

    Każda nowa instrukcja jest napisana w nowej linii.

    Aby napisać wiele instrukcji w jednym wierszu, oddziel je dwukropkiem (:).

    Jeśli instrukcja nie mieści się w jednym wierszu, musisz umieścić spację i podkreślenie (_) na końcu wiersza, a następnie kontynuować część, która nie zmieściła się w następnym wierszu.

    3.2. operator przypisania

    Operator przypisania jest używany, gdy zmienna musi mieć przypisaną nową wartość. Ma następującą składnię:

    VARIABLE_NAME= WYRAŻENIE

    Najpierw oceniane jest wyrażenie po prawej stronie, a następnie wynik przypisywany jest do zmiennej po lewej stronie.

    Na przykład. Napisz następujące wyrażenie matematyczne, używając operatora przypisania:

    W VBA wyrażenie to można zapisać jako następującą instrukcję:

    Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))

    3 .3. Oświadczenia we/wy

    3 .3.1. Operator i funkcja MsgBox

    Operator MsgBox wyświetla informacje w oknie dialogowym i ustawia tryb oczekiwania na kliknięcie przycisku użytkownika.

    Ma następującą składnię:

    MsgBox Wiadomość[,Przyciski][, Tytuł]

    Argumenty:

    Wiadomość - obowiązkowy argument określający wyświetlany komunikat informacyjny w oknie. Może składać się z kilku wierszy tekstu połączonych znakiem & . Użycie w tym argumencie Chr(13) powoduje przerwanie wiersza podczas wyprowadzania informacji.

    guziki - wartość tego argumentu określa kategorie przycisków, które pojawiają się w oknie. Wartość argumentu button określa również, czy w oknie pojawia się ikona. Jeśli nie określisz, które przyciski mają być wyświetlane w oknie komunikatu, używana jest wartość domyślna odpowiadająca przyciskowi OK. W tabeli. 3.1 pokazuje możliwe kombinacje przycisków i ikon w oknie wiadomości.

    nagłówek - ustawia tytuł okna.

    Funkcjonować MsgBox zwraca liczbę całkowitą wskazującą, który przycisk został kliknięty w oknie dialogowym.

    Tabela 3.1. Prawidłowe wartości zmiennych przycisku

    Wyświetlacz

    Argument

    Przycisk OK

    Przyciski OK i Anuluj

    Przyciski tak i nie

    Przyciski Tak, Nie i Anuluj

    Przyciski Przerwij, Ponów i Ignoruj

    VbAbortRetryIgnoruj

    Przyciski Ponów i Anuluj.

    znak informacyjny

    Znak zapytania

    Wykrzyknik

    Na przykład. Wyświetl komunikat o aktualnej dacie.

    MsgBox "Dzisiaj w kalendarzu" & Data , "Uwaga"

    W rezultacie wyświetli się następujące okno (rys.3.1).

    Po kliknięciu przycisku OK okno komunikatu zostanie zamknięte, a wykonywanie programu zostanie wznowione od instrukcji bezpośrednio po wywołaniu MsgBox.

    3.3.2. Funkcjonować Pole wprowadzania

    Funkcjonować Pole wprowadzania dokonuje wprowadzania wartości zmiennych za pomocą okna wprowadzania i ma następującą składnię:

    Nazwa_zmiennej = Pole wprowadzania(Wiadomość[, Tytuł] )

    Argumenty:

    Wiadomość jest wymaganym argumentem. Określa komunikat informacyjny w oknie, zwykle wyjaśniający znaczenie wartości wejściowej

    nagłówek - ustawia tytuł okna.

    Na przykład, Wprowadź wartość zmiennej N z klawiatury, podając domyślną wartość 10.

    Możesz do tego użyć następującego operatora:

    N = InputBox("Wprowadź N", "Dane wejściowe",10)

    W efekcie wyświetli się następujące okno do wpisania wartości zmiennej N (rys.3.2).

    Jeżeli domyślna wartość jest odpowiednia dla użytkownika, to po kliknięciu przycisku OK okno wejściowe zostanie zamknięte, zmiennej N zostanie przypisana wartość 10, a wykonywanie programu zostanie wznowione od instrukcji bezpośrednio po wywołaniu. Pole wprowadzania.

    Jeśli domyślna wartość nie odpowiada użytkownikowi, przed kliknięciem przycisku OK należy wprowadzić żądaną wartość zmiennej N.

    3 .4. Warunkowe oświadczenie IF

    Do zaimplementowania rozgałęzionego procesu obliczeniowego w VBA używany jest operator Jeśli…Wtedy…W przeciwnym razie, co jest najprostszą formą sprawdzania stanu. Ma następującą składnię:

    JeśliSTAN: SCHORZENIENastępnieOPERATOR_1milseOPERATOR_2

    OPERATOR_1 jest wykonywany, jeśli STAN: SCHORZENIE prawda, inaczej wykonane OPERATOR_2. W tym przypadku instrukcja If…Then…Else jest zapisana w jednym wierszu.

    STAN: SCHORZENIE jest wyrażeniem logicznym. Wynik wyrażenia jest zawsze typu logicznego. Wyrażenie może być proste lub złożone. Pisząc proste warunki można wykorzystać wszystkie możliwe operacje relacyjne wskazane w Tabeli 1. 3.2.

    stół3 .2. Relacje logiczne

    Operacja

    Imię

    Wyrażenie

    Wynik

    Prawda, jeśli A jest równe B

    Prawda, jeśli A nie jest równe B

    Prawda, jeśli A jest większe niż B

    Prawda, jeśli A jest mniejsze niż B

    Więcej lub równe

    Prawda, jeśli A jest większe lub równe B

    Mniejszy lub równy

    Prawda, jeśli A jest mniejsze lub równe B

    Z prostych warunków tworzy się złożone warunki, stosując operacje logiczne i nawiasy. Lista operacji logicznych znajduje się w tabeli. 3.3.

    stół3 .3. Operacje logiczne

    Imię

    Wyrażenie

    Wynik

    Boole'a
    negacja

    logiczne AND

    Logiczne OR

    W instrukcji warunkowej można użyć bloku instrukcji zamiast dowolnej instrukcji. W tym przypadku operator warunkowy wygląda następująco:

    JeśliSTAN: SCHORZENIENastępnie

    OPERATOR_BLOCK_1

    OPERATOR_BLOCK_2

    Koniec IF

    W instrukcji warunkowej można przetestować wiele warunków. W tym przypadku operator warunkowy wygląda następująco:

    JeśliWARUNEK_1Następnie

    OPERATOR_BLOCK_1

    W przeciwnym razieWARUNEK_2Następnie

    OPERATOR_BLOCK_2

    W przeciwnym razie

    koniecJeśli

    Przykład 1. Napisz część programu dla algorytmu z ryc. 3.3.

    Przykład 2 Napisz część programu dla algorytmu z ryc. 3.4.

    3.5. Wybierz oświadczenie dotyczące sprawy

    Instrukcja Select Case jest wygodna w użyciu, gdy w zależności od wartości jakiegoś wyrażenia, które ma skończony zbiór poprawnych wartości, musisz wykonać różne czynności. Dotyczy to również instrukcji warunkowych, ale ma inną formę:

    Wybierz przypadekEXPRESSION_CHECKED

    walizkaVALUES_1

    OPERATORS_1

    walizkaWARTOŚCI_ 2

    OPERATORZY_ 2

    . . .

    walizkaVALUES_N

    OPERATORZY_N

    [ walizkaW przeciwnym razie

    INACZEJ_ OPERATORZY]

    Koniec Wybierz

    EXPRESSION_CHECKED może być dowolnego typu skalarnego z wyjątkiem rzeczywistego. WARTOŚCI składają się z dowolnej liczby wartości lub zakresów, oddzielonych od siebie przecinkami.

    Rodzaj WARTOŚCI musi pasować do typu EXPRESSION_CHECKED.

    Najpierw obliczone EXPRESSION_CHECKED. Jeśli jego wartość pasuje do jednej z wartości VALUES_I, następnie OPERATORS_I Koniec Wybierz. Jeśli jego wartość nie pasuje do żadnej z wartości VALUES_I, następnie ELSE_OPERATORS i kontrola jest przekazywana operatorowi stojącemu po Koniec Wybierz

    Na przykład. Napisz część programu dla algorytmu z ryc. 3.5, która określa wartość zmiennej S w zależności od wartości zmiennej n.

    3.6. Instrukcje pętli

    Aby zaimplementować cykliczny proces obliczeniowy, tj. Wielokrotne wykonanie jednego lub więcej operatorów, używany jest operator cyklu W następnym, który ma następującą składnię:

    DoLICZNIK=WARTOŚĆ POCZĄTKOWAToEND_VALUEkrokKROK

    OPERATOR_BLOCK

    OPERATOR_BLOCK

    NastępnyLICZNIK

    Dla…Następna pętla iteruje przez wartości zmiennej LICZNIK, który jest parametrem pętli, od wartości początkowej do końcowej z określonym krokiem zmiany. Gwarantuje to, że blok instrukcji ciała pętli jest wykonywany z każdą nową wartością licznika. Jeśli krokKROK nie ma go w konstrukcji, to domyślnie przyjmuje się, że krok jest równy 1. Według operatora Wyjdź dla możesz wcześniej wyjść z instrukcji loop LICZNIK osiąga ostatnią wartość.*

    Aby iterować po obiektach z grupy podobnych obiektów, takich jak komórki z zakresu lub elementy tablicy, wygodnie jest użyć operatora pętli Do…Każdy…Następny.

    Dla każdegoElementwGrupa

    BLOK_ OPERATORZY

    OPERATOR_BLOCK

    NastępnyElement

    W VBA inne instrukcje pętli służą do organizowania pętli z nieznaną liczbą powtórzeń z wyprzedzeniem:

    pętle z warunkiem wstępnym - ZrobićDopókipętla,

    ZrobićAż dopętla;

    pętle z warunkiem końcowym - ZrobićpętlaDopóki,

    ZrobićpętlaAż do.

    Poniżej znajduje się składnia tych instrukcji pętli:

    Pętla z warunkiem wstępnymZrobić Dopóki pętla

    Czy podczasSTAN: SCHORZENIE

    OPERATOR_BLOCK

    OPERATOR_BLOCK

    Pętla z warunkiem wstępnymZrobić Aż do pętla

    ZrobićAż doSTAN: SCHORZENIE

    OPERATOR_BLOCK

    OPERATOR_BLOCK

    Pętla z warunkiem końcowymZrobić pętla podczas

    BLOK_ OPERATORZY

    OPERATOR_BLOCK

    pętla podczasSTAN: SCHORZENIE

    Pętla z warunkiem końcowymZrobić Powtarzaj dopóki

    BLOK_ OPERATORZY

    OPERATOR_BLOCK

    Powtarzaj dopókiSTAN: SCHORZENIE

    Operator ZrobićWhie…Pętla zapewnia, że ​​blok instrukcji jest powtarzany wiele razy, aż STAN: SCHORZENIE jest obserwowany, a operator



    Inne wiadomości

    Podejmowanie decyzji pozwala programistom kontrolować przebieg wykonywania skryptu lub jednej z jego sekcji. Wykonywanie jest kontrolowane przez jedną lub więcej instrukcji warunkowych.

    Poniżej znajduje się ogólny widok typowej struktury decyzyjnej występującej w większości języków programowania.

    VBA udostępnia następujące rodzaje rozwiązań. Kliknij poniższe linki, aby sprawdzić ich szczegóły.

    Jeśli...To - Jeśli to

    Instrukcja If składa się z wyrażenia logicznego, po którym następuje jedna lub więcej instrukcji. Jeśli warunek ma nazwę True, wykonywane są instrukcje w warunku Jeśli(s). Jeśli warunek ma nazwę False, wykonywane są instrukcje po pętli If.

    Składnia

    Poniżej znajduje się składnia instrukcji If w języku VBScript.

    If(wyrażenie_logiczne) Then Instrukcja 1 ..... ..... Instrukcja n End If

    schemat przepływu

    przykład

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 32 If x > y Then MsgBox "X jest większe niż Y" End If End Sub

    X jest większe niż Y

    Jeśli instrukcja składa się z wyrażenia logicznego, następuje jedna lub więcej instrukcji.

    if..else oświadczenie

    Instrukcja If składa się z wyrażenia logicznego, po którym następuje jedna lub więcej instrukcji. Jeśli warunek ma nazwę True, wykonywane są instrukcje w warunku Jeśli(s). Jeśli warunek zostanie nazwany False, wykonywane są instrukcje w Else Part.

    Składnia

    Poniżej znajduje się składnia instrukcji If Else w języku VBScript.

    If(wyrażenie_logiczne) Then Stwierdzenie 1 ..... ..... Stwierdzenie n Else Stwierdzenie 1 ..... .... Stwierdzenie n End If

    schemat przepływu

    przykład

    W celach demonstracyjnych znajdźmy największą z dwóch liczb Excela za pomocą funkcji.

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 324 If x > y Then MsgBox "X jest większe niż Y" Else Msgbox "Y jest większe niż X" End If End Sub

    Gdy powyższy kod jest wykonywany, daje następujący wynik.

    Y jest większe niż X

    W przeciwnym razie instrukcja składa się z wyrażenia logicznego, po którym następuje jedna lub więcej instrukcji. Jeśli warunek ma wartość True, wykonywane są instrukcje zawarte w instrukcjach If. Jeśli warunek jest fałszywy, wykonywana jest Else część skryptu.

    if ... elseif..else oświadczenie

    Instrukcja If, po której następuje jedna lub więcej instrukcji ElseIf, które składają się z wyrażeń logicznych, po których następuje domyślna instrukcja else, która jest wykonywana, gdy cały warunek stanie się fałszywy.

    Składnia

    Poniżej znajduje się składnia instrukcji If Elseif-Else w języku VBScript.

    If(wyrażenie_logiczne) Then Stwierdzenie 1 ..... ..... Stwierdzenie n ElseIf (wyrażenie_logiczne) Then Stwierdzenie 1 ..... .... Stwierdzenie n ElseIf (wyrażenie_logiczne) Then Stwierdzenie 1 ..... . ... Instrukcja n Else Instrukcja 1 ..... .... Instrukcja n End If

    schemat przepływu

    przykład

    W celach demonstracyjnych znajdźmy największą z dwóch liczb Excela za pomocą funkcji.

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 234 If x > y Then MsgBox "X jest większe niż Y" ElseIf y > x Then Msgbox "Y jest większe niż X" Else Msgbox "X i Y są RÓWNE” Koniec Jeśli Koniec Sub

    Gdy powyższy kod jest wykonywany, daje następujący wynik.

    X i Y są RÓWNE

    Jeśli po instrukcji następuje jedna lub więcej instrukcji ELSEIF, które składają się z wyrażeń logicznych, po których następuje opcjonalna instrukcja else, która jest wykonywana, gdy wszystkie warunki staną się fałszywe.

    zagnieżdżone instrukcje if

    Instrukcja If lub ElseIf w innej instrukcji If lub ElseIf. Wewnętrzne instrukcje If są wykonywane na wierzchu zewnętrznych instrukcji If. Pozwala to VBScript na łatwe radzenie sobie ze złożonymi warunkami.

    Składnia

    Poniżej znajduje się składnia instrukcji Nested If w języku VBScript.

    If(wyrażenie_logiczne) Then Stwierdzenie 1 ..... ..... Stwierdzenie n If(wyrażenie_logiczne) Then Stwierdzenie 1 ..... ..... Stwierdzenie n ElseIf (wyrażenie_logiczne) Then Stwierdzenie 1 ..... ....Stwierdzenie n Else Stwierdzenie 1 ..... ....Stwierdzenie n End If Else Stwierdzenie 1 Stwierdzenie n End If

    przykład

    W celach demonstracyjnych znajdźmy typ liczby dodatniej za pomocą funkcji.

    Private Sub nested_if_demo_Click() Dim a As Integer a = 23 Jeśli a > 0 Then MsgBox "Liczba jest liczbą DODATNIĄ" Jeśli a = 1 Then MsgBox "Liczba nie jest ani pierwsza, ani złożona" InaczejJeśli a = 2 Then MsgBox "Liczba jest jedyną parzystą liczbą pierwszą" W przeciwnym razie a = 3 Then MsgBox "Liczba jest najmniej nieparzystą liczbą pierwszą" Else MsgBox "Liczba NIE jest równa 0,1,2 ani 3" Koniec, jeśli inaczej a< 0 Then MsgBox "The Number is a NEGATIVE Number" Else MsgBox "The Number is ZERO" End If End Sub

    Gdy powyższy kod jest wykonywany, daje następujący wynik.

    Liczba jest liczbą POZYTYWNĄ
    Liczba NIE JEST 0,1,2 ani 3

    Instrukcja If lub ElseIf wewnątrz innej instrukcji if lub ELSEIF.

    Przełącz oświadczenie

    Gdy użytkownik chce wykonać grupę instrukcji w zależności od wartości wyrażenia, używana jest wielkość liter. Każda wartość nazywana jest przypadkiem, a zmienna jest dołączana w zależności od każdego przypadku. Instrukcja Case Else jest wykonywana, jeśli wyrażenie testowe nie pasuje do żadnego z przypadków określonych przez użytkownika.

    Case Else jest opcjonalną instrukcją w Select Case, jednak dla dobrych praktyk programistycznych zawsze dostępna jest instrukcja Case Else.

    Składnia

    Poniżej znajduje się składnia instrukcji Switch w języku VBScript.

    Wybierz Wyrażenie Case Case listawyrażeń1 instrukcja1 instrukcja2 .... ....wypowiedź1n Case listawyrażeń2 instrukcja1 instrukcja2 .... .... Case listawyrażeńn instrukcja1 instrukcja2 .... .... Case Else elsestatement1 elsestatement2 .... .. .. Koniec Wybierz

    przykład

    W celach demonstracyjnych znajdźmy typ liczby całkowitej za pomocą funkcji.

    Private Sub switch_demo_Click() Dim MyVar As Integer MyVar = 1 Wybierz przypadek MyVar Przypadek 1 MsgBox "Liczba jest najmniejszą liczbą złożoną" Przypadek 2 MsgBox "Liczba jest jedyną parzystą liczbą pierwszą" Przypadek 3 MsgBox "Liczba jest najmniej nieparzystą Numer pierwszy" Sprawa Else MsgBox "Nieznany numer" End Select End Sub

    Gdy powyższy kod jest wykonywany, daje następujący wynik.

    Liczba jest najmniej złożoną liczbą

    Instrukcja switch umożliwia testowanie zmiennej pod kątem równości z listą wartości.

    ten JEŚLI funkcja w VBA jest jednym z najczęściej używanych ze wszystkich stwierdzeń. Funkcja JEŻELI sprawdza, czy określony warunek jest spełniony, czy nie. Funkcja JEŻELI w VBA działa nieco inaczej niż w programie Excel. W programie Excel funkcja JEŻELI wykonuje dwie rzeczy: Sprawdza, czy dany warunek ma wartość PRAWDA czy FAŁSZ, a następnie zwraca wartość do użycia na podstawie oceny, tj. JEŻELI ( warunek, wartość_zwrotu_jeśli_warunek_prawda, wartość_zwrotu_jeśli_warunek_fałsz). Jednak funkcja JEŻELI w VBA wykonuje tylko pierwszą część, tj. sprawdź, czy warunek ma wartość TRUE lub FALSE. Kroki, które należy wykonać w każdym scenariuszu, zgodnie z opisem przy użyciu dodatkowej instrukcji THEN.

    Korzystanie z prostej funkcji JEŻELI w VBA

    Oto przykład JEŚLI funkcja. Ten fragment kodu VBA po prostu sprawdza, czy określony warunek (tj. 1 > 4) ma wartość PRAWDA czy FAŁSZ. W tym przypadku określiliśmy tylko kroki, które należy wykonać, gdy warunek ma wartość TRUE. W takim przypadku wynik zostanie wyświetlony na ekranie. Jeśli funkcja miałaby ocenić wartość FALSE, kod VBA nic nie zrobi.

    1
    2
    3
    4
    5

    Sub JEŻELI_FUNCTION()
    Jeśli 7 > 1 Wtedy
    MsgBox "7 jest większe niż 1"
    Zakończ, jeśli
    napis końcowy

    ten NASTĘPNIE Instrukcja jest zasadniczo dyrektywą wskazującą, że kroki następujące bezpośrednio po niej mają zostać wykonane, jeśli warunek tuż przed, jeśli ma wartość TRUE.

    Funkcja JEŻELI zwykle kończy się deklaracją KONIEC JEŻELI, która informuje aplikację, że jest to ostatni wiersz funkcji JEŻELI. Poniżej podano nieco krótszą postać funkcji JEŻELI. Zauważ, że instrukcja END IF została z tego wyeliminowana, a zatem trzy wiersze kodu zostały scalone w jeden.

    Sub IF_FUNCTION_SHORT()
    Jeśli 7 > 1 to MsgBox "7 jest większe niż 1"
    napis końcowy

    Jednak tego formularza należy używać tylko wtedy, gdy nie ma W PRZECIWNYM RAZIE lub JEŚLI JEŚLI potrzebne są oświadczenia. Przyjrzyjmy się, czym one są i jak pomagają ulepszyć funkcję IF.

    Używanie funkcji JEŻELI z ELSE w VBA

    W powyższym przykładzie widzieliśmy, że funkcja JEŻELI byłaby w stanie wykonać kroki tylko wtedy, gdy warunek zostanie oceniony jako PRAWDA. Ale co, gdybyśmy chcieli określić kroki, które należy wykonać, gdy którykolwiek z warunków zostanie spełniony. Jednym ze sposobów uzyskania rozgałęzienia funkcji JEŻELI jest użycie instrukcji ELSE. Mówiąc najprościej, instrukcja ELSE powoduje, że aplikacja wykonuje kroki wymienione w bloku ELSE, gdy warunek określony w klauzuli IF ma wartość FALSE.

    W poniższym przykładzie kodu VBA warunek w funkcji JEŻELI ma wartość false, kroki wymienione w bloku ELSE są wykonywane z wynikiem, że na ekranie pojawia się komunikat „1 jest mniejsze niż 4”. Do bloku można dodać wiele kroków, aby wszystkie były wykonywane jeden po drugim.

    1
    2
    3
    4
    5
    6
    7

    Sub IF_ELSEIF_FUNCTION()
    Jeśli 1 > 4 Wtedy

    W przeciwnym razie :
    MsgBox "1 to mniej niż 4"
    Zakończ, jeśli
    napis końcowy

    Używanie funkcji JEŻELI z ELSEIF i ELSE: w VBA

    Oświadczenie ELSE może być obsługiwane przez instrukcje ELSEIF. Są one zwykle używane do sprawdzania określonych warunków i jeśli wszystkie z nich mają wartość FALSE, kroki określone w warunku ELSE zostaną ostatecznie wykonane. Instrukcja IF sprawdzi dany warunek. Jeśli ten warunek okaże się FALSE, zostanie sprawdzony warunek określony w pierwszej instrukcji ELSEIF. Jeśli to również okaże się FAŁSZ, warunek określony w drugiej instrukcji ELSEIF zostanie sprawdzony i tak dalej i tak dalej. Jeśli wszystkie warunki określone w instrukcjach IF i ELSEIF okażą się FALSE, domyślnie zostaną wykonane kroki wymienione w ostatnim bloku ELSE:. Proszę pamiętać, że jeśli istnieje wiele instrukcji ELSEIF, pierwsza z nich, która ma wartość TRUE, zostanie wykonana, a po jej zakończeniu wykonanie kodu zostanie przeniesione do instrukcji END IF. Nawet jeśli istnieje wiele warunków ELSEIF, które mają wartość TRUE, zostanie wykonany tylko pierwszy, który ma wartość TRUE.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11


    Jeśli< >wtedy
    MsgBox "1 jest większe niż 4"
    W przeciwnym razie< >wtedy

    W przeciwnym razie< >wtedy

    W przeciwnym razie< >:

    Zakończ, jeśli
    napis końcowy

    W poniższym przykładzie najpierw sprawdzany jest warunek JEŻELI. Ponieważ zwraca FALSE, oceniany jest pierwszy warunek ELSEIF, a następnie drugi. Ponieważ żaden z nich nie ma wartości TRUE, wykonywane są kroki wymienione w warunku ELSE:.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    Sub IF_ELSEIF_ELSE_FUNCTION()
    Jeśli 1 > 4 Wtedy
    MsgBox "1 jest większe niż 4"
    Inaczej Jeśli 2 > 4 Wtedy
    MsgBox "2 jest większe niż 4"
    InaczejJeśli 3 > 4 Wtedy
    MsgBox "3 jest większe niż 4"
    W przeciwnym razie :
    MsgBox "1, 2 lub 3 to mniej niż 4"
    Zakończ, jeśli
    napis końcowy

    Szybka wskazówka – jak sprawić, by instrukcje IF działały szybciej

    Oba fragmenty kodu wyglądają podobnie. Zamieniono dwa warunki ELSEIF w drugiej funkcji. Jak myślisz, który z poniższych fragmentów kodu VBA działa szybciej?:
    Zakończ, jeśli
    Dalej ja
    Minutnik MsgBox - t
    napis końcowy

    Odpowiedź brzmi, że druga działa znacznie szybciej niż pierwsza. Czemu? Ponieważ drugi potrzebuje aplikacji, aby przejść przez krótsze wiersze kodu, zanim znajdzie warunek, który ma wartość TRUE. Pamiętaj, że pierwszy warunek ELSEIF, który jeśli zostanie znaleziony TRUE, zostanie wykonany, a żaden inny warunek nie zostanie oceniony, nawet jeśli miałby również mieć wartość TRUE. W pierwszym fragmencie kodu VBA funkcja ELSEIF w wierszu 6 przyjmuje wartość TRUE, podczas gdy w drugim wierszu 5 spełnia kryteria. Zasadniczo im bardziej prawdopodobny jest, że warunek zostanie oceniony jako PRAWDA, tym wcześniej powinien zostać umieszczony w kodzie VBA, a wszystko inne jest takie samo.