Počítače Okna Internet

If vba excel description. Metodické pokyny a úkoly. Pokud podmínka, pak výraz

Pokud... Pak... Jiné prohlášení.

Tato lekce se zaměří na takové téma, jako jsou - operátory. Zejména se seznámíme s operátorem If ... Then ... Else a také se seznámíme s aritmetickými a porovnávacími operátory, bez kterých nelze operátor If ... Then ... Else na maximum.

Visual Basic má poměrně velké množství různých operátorů, někteří dokážou zavařit mozek i ostřílenému programátorovi. Abychom se „nevařili“, zvážíme jen ty nejzákladnější operátory, na kterých funguje 95 % programů, zbývající operátory si prostudujeme podle potřeby, takže se nemusíte učit nazpaměť celou učebnici a můžete rovnou pokračovat na praktická cvičení.

Zveřejněním této lekce mám na mysli, že máte znalosti z matematiky na základní škole.
Jaké znalosti? To jsou právě ty příklady, ve kterých jsme odečítali, sčítali, násobili, ... Pamatujete si to? Pokuta! Takže v baňkách je stále střelný prach.

Než začnete studovat operátor If ... Then ... Else, musíte se seznámit s aritmetickými a logickými operátory, bez kterých nelze operátor If ... Then ... Else aplikovat z hlediska hloubkového praxe. Dobře, dost nudných návodů a odboček, pohodlně se usaďte a pusťte se do práce!

Aritmetické operátory
S pomocí těchto operátorů můžete; dělit, násobit, sčítat atd.
Vše je jednoduché jako na základní škole.

+ (dodatek)
- (odčítání)
* (násobení)
/ (dělení se zbytkem) ve škole byl znak divize tímto znakem : zapamatujte si tyto rozdíly a nezaměňujte je
\ (celočíselné dělení, žádný zbytek)

Porovnávací operátory
To jsou docela důležití operátoři. Tyto operátory můžete použít k porovnání čísel, řetězců a dalších dat. Bez srovnávacích operátorů není možné sestavit logiku nebo větvení v programu.
Je důležité si pamatovat, že porovnávací operátory porovnávají dva výrazy a vrací booleovskou hodnotu ve tvaru True (pokud je podmínka pravdivá) a False (pokud podmínka neplatí).
Pravda v překladu z angličtiny znamená - Pravda
False v překladu z angličtiny znamená - Falešný
Na cestách se to může zdát nepochopitelné, ale nebojte se, o něco později pochopíte, co všechno toto ďábelství znamená.

= (rovná se)
Hodnota prvního výrazu je rovna hodnotě druhého výrazu, nebo může být výsledkem sčítání / odečítání / ... dvou výpočtů.

<> (nerovnost)
Hodnota prvního výrazu se nerovná hodnotě druhého výrazu

< (méně)
Hodnota prvního výrazu je menší než hodnota druhého výrazu

> (více)
Hodnota prvního výrazu je větší než hodnota druhého

<= (méně nebo stejně)
Hodnota prvního výrazu je menší nebo rovna hodnotě druhého

>=
(více nebo stejně)
Hodnota prvního výrazu je větší nebo rovna hodnotě druhého

Vidím, vidím, že už se bojíš, vlastně nic hrozného!
Čtěte dále a uvidíte, že vše je velmi jednoduché.
Níže vše důkladně podložíme příklady a v praxi.
A tak jsme prozkoumali aritmetické a logické operátory, nyní můžete přejít přímo na samotný operátor If ... Then ... Else.

If ... Then ... Else Statement
Nejprve se podívejme, co znamenají slova operátora při překladu z angličtiny do ruštiny.
If se překládá jako If
Pak se překládá jako Komu
Else v překladu znamená Else

K čemu se používá příkaz If ... Then ... Else?
Pomocí tohoto operátoru můžete větvit programy, bez tohoto operátoru není možné napsat seriózní program.
Přejděme k typickým příkladům.

Jak počítač zpracuje příkaz If ...?
Řekněme, že máme dvě proměnné:

Dim var1 = 10 Dim var2 = 5

a řekněme, že máme podmínku:

If var1> var2 Then MsgBox ("Ano, var1 je větší než var2") End If

Jak výše uvedená podmínka funguje?
Počítač se podívá na proměnné var1 a var2, pokud je var1 skutečně větší než var2, pak je podmínka pravdivá (True) a počítač zobrazí MsgBox.
Pokud podmínka není pravdivá (False), počítač nezobrazí MsgBox.
Můžete to ověřit změnou hodnot proměnných na jiná čísla, takže podmínka není pravdivá, pak neuvidíme MsgBox.

Pozornost!

Ke studiu příkladů je to nutné.
Po vytvoření projektu na formuláři pak musíte dvakrát kliknout na tlačítko levým tlačítkem myši, otevře se editor kódu a kurzor se umístí na místo, kam potřebujete vložit kód z příkladů níže.
Po vložení kódu se musíte také podívat na výsledek kliknutím na tlačítko umístěné na formuláři.


Příklady
Následují příklady v následujícím pořadí.

Aritmetické operátory
+ (dodatek)
- (odčítání)
* (násobení)
/ (divize)

Rušič vztlaku: Aritmetické příklady - KLIKNĚTE

+ dodatek:

"Příklad ukazuje, jak můžete přidat dvě čísla Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 + chislo2 MsgBox (výsledek)

- Odečítání:

"Příklad ukazuje, jak můžete získat rozdíl dvou čísel (odčítání) Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 - chislo2 MsgBox (výsledek)

* Násobení:

"Příklad ukazuje, jak můžete vynásobit jedno číslo druhým Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 * chislo2 MsgBox (výsledek)

/ divize:

"Příklad ukazuje, jak můžete vydělit jedno číslo druhým Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 / chislo2 MsgBox (výsledek)

Porovnávací operátory
= (rovná se)
<> (nerovnost)
< (méně)
> (více)
<= (méně nebo stejně)
>= (více nebo stejně)

Rušič vztlaku: Porovnávací operátory - KLIKNĚTE

= Rovná se:

"Příklad ukazuje, jak můžete zjistit, zda se text v proměnné rovná jinému textu, který jsme zadali. Dim stroka As String =" Ahoj NubClub! "" Pokud je stroka rovna textu v uvozovkách, pak mi ukaž MsgBox If stroka = "Ahoj NubClub!" Potom MsgBox ("Proměnná se rovná textu, který hledáme!") End If

<>Nerovnost:

"Příklad ukazuje, jak můžete zjistit, zda se text v proměnné rovná jinému textu, který jsme zadali Dim stroka As String =" Ahoj NubClub! "" Pokud se stroka nerovná textu ve dvojitých uvozovkách, ukaž mi MsgBox Pokud stroka<>"Jsem začátečník programátor" Potom MsgBox ("Text v proměnné stroka se nerovná textu v uvozovkách!") End If

< Меньше:

"Příklad ukazuje, jak můžete porovnat dvě čísla Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" Pokud je chislo2 menší než chislo1, pak mi ukázat MsgBox If chislo2< chislo1 Then MsgBox("Значение переменной chislo2 меньше значения переменной chislo1") End If

> Více:

"Příklad ukazuje, jak můžete porovnat dvě čísla Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" Pokud je chislo1 větší než chislo2, pak mi ukaž MsgBox If chislo1> chislo2 Then MsgBox ("Hodnota proměnné chislo1 je větší než hodnota proměnné chislo2") End If

<= Меньше или равно:

"Příklad ukazuje, jak můžete porovnat dvě čísla Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" Pokud je chislo2 menší nebo rovno chislo1, pak mi ukázat MsgBox If chislo2<= chislo1 Then MsgBox("Значение переменной chislo2 меньше или равно значению переменной chislo1") End If

> = Větší nebo rovno:

"Příklad ukazuje, jak můžete porovnat dvě čísla Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" Pokud je chislo1 větší nebo rovno chislo2, pak mi ukaž MsgBox If chislo1> = chislo2 Then MsgBox ("Hodnota proměnné chislo1 je větší nebo rovno hodnotě proměnné chislo2" ) End If

Pokud ... Pak ... Prohlášení Else - Větvení
Výše uvedené byly pěkné jednoduché příklady pomocí podmínek If ... Then, tzn. žádné větvení a žádné jiné.
Nyní se podívejme na pár příkladů s větvením, jsou trochu složitější, ale bez nich se nikam nedostanete.
V podstatě s použitím Else zůstanou všechny příklady stejné jako výše, jen přibude malé větvení programu.
Co bude přidáno?
Pokud se dřívější MsgBox objevil pouze tehdy, když byla podmínka pravdivá, pak pomocí Else můžete volat MsgBox, i když podmínka neplatí.

A tak příklad.

"Příklad ukazuje, jak můžete zjistit, zda se text v proměnné rovná jinému textu, který jsme zadali. Dim stroka As String =" Ahoj NubClub!" "Pokud se stroka NENÍ ROVNANÁ textu v uvozovkách, ukažte mi MsgBox s textem - Proměnná se nerovná textu, který hledáme! Pokud stroka =" Ahoj NubClub! "Pak MsgBox (" Proměnná se rovná text, který hledáme! ") Else MsgBox ( "Proměnná se nerovná textu, který hledáme!") End If

Jsou chvíle, kdy máme jednu proměnnou a několik hodnot s textem, který je třeba zkontrolovat. co potom dělat? Sundej si kalhoty a utíkej?!
Ne, toto není naše metoda
Existuje elegantnější řešení. Pomocí ElseIf můžete naši podmínku zkomplikovat a zkontrolovat tak libovolný počet řádků, samozřejmě v rozumných mezích. Pokud je čar hodně, přijdou na pomoc smyčky, se kterými budeme pracovat v dalších lekcích.

Podívejme se na příklad.
Představme si, že potřebujeme vytvořit logiku pro pouliční semafor, aby fungoval a ukazoval barvy.
Jak to udělat?
Vlastně to není těžké, příklad.

Ve Visual Basic for Application (VBA) existuje několik způsobů, jak změnit pořadí provádění příkazů. Řídicí struktury VBA jsou velmi podobné podobným strukturám v jiných programovacích jazycích.

Základní řídicí struktury VBA:

  • If Then Else "End If
  • Pro další
  • Zatímco wend
  • Udělejte smyčku
  • Vyberte případ "End Select
  • Pro každý další

    If Then Else "Kontrolní příkaz End If
    Tento příkaz mění pořadí provádění příkazů v závislosti na výsledcích kontroly dané podmínky (nebo sady podmínek)

    Příklad:

    Sub TestIfThen ()

    iData = "pašulka"

    If iData = "Excel" Pak
    MsgBox "Tuto zprávu nikdy neuvidíte!!!"
    ElseIf iData = "Kancelář" Potom
    MsgBox "Bohužel ani tuto zprávu neuvidíte!!!"
    Jiný
    MsgBox "Tato zpráva se stejně objeví", iData
    End If

    komentáře:
    Li - klíčové slovo označující začátek kontroly
    iData- proměnná, jejíž hodnota bude kontrolována
    Pak- klíčové slovo označující konec kontroly
    MsgBox- zpráva
    ElseIf- klíčové slovo znamenající začátek nové kontroly
    Pak- klíčové slovo označující konec dodatečné kontroly
    MsgBox- zpráva
    Jiný- klíčové slovo označující konec bloku instrukcí provedených s kladným výsledkem kontroly a začátek bloku instrukcí provedených s negativním výsledkem.
    MsgBox- zpráva
    End If

    V příkazu If Then Else "End If jsou klíčová slova ElseIf a Jiný jsou volitelné.

    Pro další kontrolní prohlášení
    Tato instrukce vám umožňuje provádět určité akce v požadovaném počtu. Tyto instrukce se běžně označují jako smyčky.

    Příklad:

    Sub TestForNext ()

    Pro iCount = 1 až 100 Krok 2
    i = i + 1
    další

    komentáře:
    Pro
    počítám- proměnná, která určuje počet opakování cyklu.
    1 - počáteční hodnota počítadla
    Na- klíčové slovo oddělující počáteční a koncovou hodnotu počítadla
    100 - konečná hodnota počítadla
    Krok- klíčové slovo, které definuje krok počítadla
    2 - krok počítadla (číslo)
    další- klíčové slovo, po jehož dosažení se hodnota počítadla změní o velikost kroku, po kterém řízení přejde opět na začátek cyklu.
    MsgBox

    V příkazu For Next klíčové slovo Krok je volitelný. Pokud chybí, bude krok počítadla roven 1.

    Důležité Krok počítadla musí být číslo. Pokud je krok počítadla zadán jako záporné číslo, pak se hodnota počítadla bude s každým cyklem snižovat.

    Příklad s odpočítáváním:

    Sub TestForNext2 ()

    Pro iCount = 300 až 1 krok -3
    i = i + 1
    Pokud iCount = 153, pak Exit For
    Další iCount

    MsgBox "Počet opakování:" & i

    Dávejte pozor na:
    Li iCount = 153 Pak- v tomto kódu VBA jsme použili již známý příkaz If Then Else
    Konec pro
    Další iCount- kód obsahuje proměnnou (počítadlo), která se nachází za klíčovým slovem. Tato syntaxe se obvykle používá pro vizuální definice konec smyčky, pokud je v kódu VBA dostatek takových instrukcí.

    Zatímco prohlášení Wend Control
    Tato instrukce umožňuje provádět určité akce, pokud je splněna daná podmínka.

    Příklad:

    Dílčí testWhileWend ()

    Zatímco iCount iCount = iCount + 1
    Zamířit

    komentáře:
    Zatímco- klíčové slovo, které znamená začátek cyklu
    iCount - podmínka, za které bude tato instrukce provedena
    Zamířit
    MsgBox- zpráva o počtu opakování

    Proveďte instrukce pro ovládání smyčky
    Tato instrukce umožňuje provádět určité akce nejen po dobu, kdy je zadaná podmínka splněna, ale také po většinu času, dokud je zadaná podmínka splněna.

    Příklad:

    Sub TestDoLoop ()

    Proveďte, dokud iCount> = 100
    iCount = iCount + 1
    Smyčka

    MsgBox "Počet opakování:" & iCount

    komentáře:
    Dělat- klíčové slovo, které znamená začátek cyklu
    Dokud- klíčové slovo označující přítomnost podmínky
    iCount> = 100- podmínka, za které bude tato instrukce provedena
    Smyčka- klíčové slovo, které znamená konec cyklu
    MsgBox- zpráva o počtu opakování

    Dílčí TestDoLoop2 ()

    Dělat
    iCount = iCount + 1
    Pokud iCount = 50, pak Exit Do
    Opakovat, dokud iCount = 100

    MsgBox "Počet opakování:" & iCount

    Dávejte pozor na:
    Li iCount = 50 Pak- v tomto kódu VBA jsme opět aplikovali již známý příkaz If Then Else
    Konec Do- pokyn znamenající předčasný odchod z cyklu
    iCount = 100- podmínka, za které bude tato instrukce provedena

    Poznámka:
    Podmínka zadaná na konci cyklu zaručuje, že bude proveden alespoň jednou. Pozor na návod While Wend, Do Loop, protože při špatném nastavení podmínky můžete téměř získat perpetuum mobile.

    Vyberte případ "End Select Control Statement
    Tento příkaz v závislosti na výsledcích hodnoty proměnné nebo výrazu provede jeden z několika částí kódu.

    Příklad:

    Sub TestSelectCase ()

    Vyberte Case iNumeric
    Případ 1

    Případ 2, 5
    MsgBox "Tato zpráva, kterou byste neměli vidět"
    Případ 10 až 13
    MsgBox "Tato zpráva, kterou byste neměli vidět"
    Případ je > 14
    MsgBox "Toto je zpráva, kterou byste měli vidět"
    Případ jiný
    MsgBox "Tato zpráva se zobrazí, pokud je proměnná End Select

    komentáře:
    Vyberte případ
    iNumeric- proměnná nebo výraz, jehož hodnota určuje výběr fragmentu kódu VBA pro spuštění
    Případ 1- první varianta porovnávané hodnoty.
    Pokud se hodnota proměnné shoduje, pak se provede fragment kódu následující za Case, ale před dalším klíčem Case pak příkaz dokončí svou práci. V opačném případě bude kontrola pokračovat.
    Případ 2, 5- druhá varianta významu.
    Případ 10 až 13- třetí varianta významu.
    Případ je > 14- čtvrtá varianta významu.
    MsgBox- zpráva, která se v tomto případě zobrazí
    Případ jiný- klíčová slova označující spuštění kódu, pokud neodpovídá žádná z předchozích možností.
    Konec Vyberte- klíčové slovo označující konec instrukce

    V příkazu Select Case "End Select, klíčové slovo Případ jiný je volitelný.

    Pro každý další kontrolní příkaz
    Tato instrukce vám umožňuje provádět určité akce s každým objektem rodiny nebo prvku pole.

    Příklad s objektem Range:

    Sub TestForEachNextRange ()


    i = i + 1
    iCell.Value = "(! LANG: Cell #" & i !}
    další

    MsgBox "Počet buněk:" & i

    komentáře:
    Pro každého- klíčová slova označující začátek instrukce
    iCell- proměnná, ke které jsou přiřazeny hodnoty prvků skupiny (pole nebo rodiny), pro práci s prvky pole musí být proměnná typu Variant.
    v- klíčové slovo oddělující proměnnou od skupiny
    Rozsah ("A1: C5")- skupinka. pole nebo rodina objektů. Počet iterací cyklu závisí na počtu prvků zahrnutých ve skupině. Při prvním spuštění cyklu je proměnné přiřazena hodnota úplně prvního prvku skupiny a poté , ze všech následujících.
    další- klíčové slovo, po jehož dosažení se řízení opět přesune na začátek cyklu.
    MsgBox- zpráva o počtu prvků ve skupině.

    V tomto případě použití takového počítání počtu buněk v objektu Range není nejlepší způsob, protože tento objekt má vlastnost, která se s tímto úkolem vyrovná mnohem lépe: Objekt rozsahu: jeho vlastnosti a metody


  • Příklad manipulace s objektem Range:

    Sub TestForEachNextRangeChanges ()

    Pro každý iCell v dosahu ("A1: C5")

    i = i + 1: iCell.Hodnota = i

    If iCell.Value 5 Then
    iCell.Font.Size = 15
    iCell.Interior.ColorIndex = 50
    ElseIf iCell.Value = 13 Nebo iCell.Value = 5 Pak
    iCell.Font.Size = 20
    iCell.Interior.ColorIndex = 3
    Jiný
    iCell.Clear
    End If

    Dávejte pozor na:
    - v tomto kódu VBA jsme pro kontrolu hodnot v buňce použili již známý příkaz If Then Else.
    - podle toho, která podmínka prošla kontrolou, se provede určitá část kódu, která využívá různé vlastnosti objektu Range.

    Příklad s rodinou WorkSheets:

    Sub TestForEachNextSheet ()

    Pro každý iList v pracovních listech
    i = i + 1
    iNameList = iNameList & Chr (10) & iList.Name
    další

    MsgBox "Počet listů:" & i & Chr (10) & _
    "Názvy listů:" & iNameList

    V tomto případě není použití takového počtu listů nejlepším způsobem, protože tento objekt má také vlastnost, která se s tímto úkolem vyrovná mnohem lépe.

    Podmínky jsou velmi užitečné při programování, protože nám umožňují provádět akce v závislosti na stanovených kritériích (používá se stejný princip jako v LI funkce Excelu).

    Nejdůležitější funkcí, která nastavuje podmínku, je LI a teď uvidíme, jak to funguje:

    Pokud [ZDE PODMÍNKA] Pak "=> POKUD je podmínka pravdivá, TAK" Instrukce, pokud je "pravda" Jinak "=> JINAK" Instrukce, pokud je "false" End If

    Pojďme do praxe a vraťme se k příkladu, který jsme použili ve variabilním tutoriálu. Účelem tohoto postupu bylo otevřít dialogové okno, které by obsahovalo hodnotu z řetězce zadaného v buňce F5:

    Pokud zadáte písmeno do buňky F5, bude to mít za následek chybu. Chceme tomu zabránit.

    Dílčí proměnné () "Deklarování proměnných Dim last_name As String, first_name As String, age As Integer, row_number As Integer" Přiřazení hodnot proměnným row_number = Rozsah ("F5") + 1 last_name = Buňky (row_number, 1) first_name = Buňky (číslo_řádku , 2) věk = Buňky (číslo_řádku, 3) "dialogové okno schránky zpráv příjmení &" "& jméno &", "& věk &" roky "Konec

    Přidejme podmínku, která zkontroluje, zda je zadaná hodnota v buňce F5číslo před provedením kódu.

    Použijeme funkci IsNumeric pro kontrolu stavu:

    Dílčí proměnné () "Pokud je hodnota v závorkách (buňka F5) číselná (A TOTO JE PODMÍNKA, POKUD JE SPRÁVNÁ), pak" postupujte podle pokynů THEN If IsNumeric (Rozsah ("F5")) Then "Declare Variables Dim last_name As String , first_name As String, age As Integer, row_number As Integer "Přiřazení hodnot proměnným row_number = Rozsah (" F5 ") + 1 last_name = Cells (row_number, 1) first_name = Cells (row_number, 2) age = Cells ( row_number, 3) "Dialogové okno MsgBox last_name &" "& first_name &", "& age &" years "End If End Sub

    Musíme také napsat instrukce, pokud není splněna námi nastavená podmínka:

    Dílčí proměnné () If IsNumeric (Rozsah ("F5")) Potom "Pokud je podmínka splněna" Deklarování proměnných Dim last_name As String, First_name As String, Age As Integer, row_number As Integer "Přiřazení hodnot proměnným row_number = Range (" F5 ") + 1 příjmení = Buňky (číslo_řádku, 1) jméno = Buňky (číslo_řádku, 2) věk = Buňky (číslo_řádku, 3) "Dialogové okno Příjmení &" "& jméno &", "& věk &" roky " Else" Pokud se podmínka nevykoná "Dialogové okno: Varovné MsgBox" Zadaná hodnota "& Rozsah (" F5 ") &" není platná!" "Odstranění obsahu buňky F5 Range (" F5 "). ClearContents End If End Sub

    Nečíselná hodnota nyní nezpůsobí žádné problémy.

    Při práci s naším polem, které obsahuje 16 řádků dat, bude naším dalším krokem kontrola, zda je proměnná row_number „větší nebo rovna 2“ a „menší nebo rovna 17“.

    Nejprve se však podívejme na operátory porovnání:

    a tyto užitečné operátory:

    Nyní přidáme jednu z výše uvedených podmínek A mezi srovnávacími operátory:

    Dílčí proměnné () If IsNumeric (Range ("F5")) Then "If číselná hodnota Dim last_name As String, first_name As String, age As Integer, row_number As Integer row_number = Range (" F5 ") + 1 If row_number> = 2 A číslo_řádku

    Pokud chceme, aby naše makro bylo praktičtější, můžeme nahradit 17 do proměnné, která by obsahovala počet řádků. To by nám umožnilo přidávat a odebírat řádky z pole, aniž bychom museli tento limit pokaždé měnit.

    Abychom to mohli udělat, musíme vytvořit proměnnou nb_rows a přidejte tuto funkci.

    V tomto případě použijeme funkci WorksheetFunction.CountA, což je obdoba funkce COUNTA v samotném Excelu.

    Chceme, aby tato funkce spočítala počet neprázdných buněk v prvním sloupci zápisem výsledné hodnoty do proměnné nb_rows:

    Dílčí proměnné () If IsNumeric (Range ("F5")) Then "IF NUMBER Dim last_name As String, first_name As String, age As Integer, row_number As Integer Dim nb_rows As Integer row_number = Range (" F5 ") + 1 nb_rows = WorksheetFunction.CountA (Range ("A: A")) "Funkce pro počítání počtu řádků If row_number> = 2 And row_number

    ElseIf

    ElseIf umožňuje přidat další podmínky za příkaz IF:

    Jestliže [POMÍNKA 1] Pak "=> POKUD je podmínka 1 pravdivá, TAK" Příkazy 1 ElseIf [POMÍNKA 2] Pak "=> POKUD je podmínka 1 nepravdivá, ale podmínka 2 je pravdivá, TAK" Příkazy 2 Else "=> ELSE" Výpisy 3 End If

    Li PODMÍNKA 1 provedeno, Pokyn 1 provede a opustí operátora LI(což začíná LI a končí End If). Li PODMÍNKA 2 nabývá významu" Ležící “, pak bude provedena Pokyn 2 a pokud se obratem vrátí " Ležící ", pak Pokyn 3(pod Jiný) bude provedena.

    Sub score_comment () "Proměnné Dim note As Integer, score_comment As String note = Range (" A1 ")" Komentáře na základě obdrženého skóre If note = 6 Then score_comment = "Skvělé skóre!" ElseIf poznámka = 5 Then score_comment = "Dobré skóre" ElseIf poznámka = 4 Then score_comment = "Spokojivé skóre" ElseIf poznámka = 3 Then score_comment = "Neuspokojivé skóre" ElseIf poznámka = 2 Then score_comment = "Špatné skóre" ElseIf poznámka = 1 Pak score_comment = "Hrozné skóre" Else score_comment = "Nulové skóre" End If "Komentář v buňce B1 Rozsah (" B1 ") = score_comment End Sub

    Vybrat

    Existuje alternativa k použití Li s mnoha ElseIf instrukce, jmenovitě příkaz Vybrat který je pro tento druh situací vhodnější.

    Uvažujme příklad makra s operátorem Vybrat:

    Sub score_comment () "Proměnné Dim note As Integer, score_comment As String note = Range (" A1 ")" Komentáře založené na skóre, které jste obdrželi Vybrat případovou poznámku "

    Stojí za zmínku, že jsme mohli použít i jiné srovnávací operátory:

    Případ je> = 6", pokud hodnota> = 6

    Příklady s různými významy:

    Případ je = 6, 7 "pokud hodnota = 6 nebo 7 Případ je 6, 7", pokud hodnota není 6 nebo 7 Případ 6 až 10 "pokud hodnota = libovolné číslo od 6 do 10

    Základní operátory VBA

    Komentáře (0)

    3.1. Pravidla záznamu operátora

    Při nahrávání operátorů musíte dodržovat následující pravidla:

    Každý nový příkaz je zapsán na nový řádek.

    Chcete-li napsat více operátorů na jeden řádek, oddělte je dvojtečkou (:).

    Pokud se operátor nevejde na jeden řádek, musíte na konec řádku vložit mezeru a podtržítko (_) a poté pokračovat v části, která se nevejde na další řádek.

    3.2. Operátor přiřazení

    Operátor přiřazení se používá, když je třeba proměnné přiřadit novou hodnotu. Má následující syntaxi:

    NÁZEV PROMĚNNÉ= VÝRAZ

    Nejprve se vyhodnotí výraz na pravé straně a poté se výsledek přiřadí proměnné na levé straně.

    například... Napište následující matematický výraz pomocí operátoru přiřazení:

    Ve VBA lze tento výraz zapsat jako následující operátor:

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

    3 .3. I/O operátory

    3 .3.1. Operátor a funkce MsgBox

    Operátor MsgBox provede výstup informací v dialogovém okně a nastaví režim čekání na stisknutí tlačítka uživatelem.

    Má následující syntaxi:

    MsgBox Zpráva [, tlačítka] [, název]

    Argumenty:

    Zpráva - povinný argument určující informační zprávu, která se má v okně zobrazit. Může se skládat z několika textových řádků spojených znaménkem & ... Použití v tomto argumentu Chr (13) vede při zobrazení informací na nový řádek.

    Tlačítka - hodnota tohoto argumentu určuje kategorie tlačítek, která se objeví v okně. Hodnota argumentu tlačítka také určuje, zda se v okně objeví nějaká ikona. Pokud neurčíte, která tlačítka se mají v okně zprávy zobrazit, použije se výchozí hodnota odpovídající tlačítku OK. Stůl 3.1 ukazuje možné kombinace tlačítek a ikon v okně zprávy.

    Nadpis - nastavuje titulek okna.

    Funkce MsgBox vrátí celé číslo označující, na které tlačítko bylo v dialogovém okně kliknuto.

    Tabulka 3.1. Platné hodnoty pro proměnnou tlačítka

    Zobrazit

    Argument

    tlačítko OK

    Tlačítka OK a Storno

    Tlačítka Ano a Ne

    Tlačítka Ano, Ne a Zrušit

    Tlačítka Zastavit, Znovu a Ignorovat

    VbAbortRetryIgnore

    Tlačítka Znovu a Zrušit.

    Informační znamení

    Otazník

    Vykřičník

    například... Zobrazí zprávu o aktuálním datu.

    MsgBox "Dnes je v kalendáři" & Datum, "Pozor"

    V důsledku toho se zobrazí následující okno (obrázek 3.1).

    Po kliknutí na tlačítko OK se okno se zprávou zavře a program bude pokračovat ve vykonávání příkazu bezprostředně za voláním MsgBox.

    3.3.2. Funkce InputBox

    Funkce InputBox zadává hodnoty proměnných pomocí vstupního okna a má následující syntaxi:

    Název proměnné = InputBox (Zpráva [, Název] )

    Argumenty:

    Zpráva - požadovaný argument. Nastaví v okně informační zprávu, obvykle vysvětlující význam zadané hodnoty

    Nadpis - nastavuje titulek okna.

    například, Zadejte hodnotu proměnné N z klávesnice s výchozí hodnotou 10.

    K tomu můžete použít následující operátor:

    N = InputBox ("Zadejte N", "Zadání počátečních dat", 10)

    V důsledku toho se zobrazí následující okno pro zadání hodnoty proměnné N (obrázek 3.2).

    Pokud uživateli vyhovuje výchozí hodnota, po kliknutí na tlačítko OK se vstupní okno zavře, proměnné N bude přiřazena hodnota 10 a provádění programu se obnoví od operátora bezprostředně za hovorem. InputBox.

    Pokud výchozí hodnota uživateli nevyhovuje, musíte před kliknutím na tlačítko OK zadat požadovanou hodnotu proměnná N.

    3 .4. Podmíněný příkaz IF

    Chcete-li implementovat výpočetní proces větvení ve VBA, operátor Jestliže pak jinak, což je nejjednodušší forma kontroly stavu. Má následující syntaxi:

    LiSTAVPakOPERATOR_1ElseOPERATOR_2

    OPERATOR_1 se provede, pokud STAV pravda, jinak provedeno OPERATOR_2. V tomto případě je příkaz If… Then… Else zapsán na jeden řádek.

    STAV je booleovský výraz. Výsledek výrazu je vždy booleovský. Vyjádření může být jednoduché nebo složité. Při zápisu jednoduchých podmínek lze použít všechny možné operace vztahu uvedené v tabulce 1. 3.2.

    stůl3 .2. Logický vztah

    Úkon

    název

    Výraz

    Výsledek

    Pravda, pokud se A rovná B

    Pravda, pokud A není rovno B

    Platí, pokud A je větší než B

    Platí, pokud A je menší než B

    Více nebo stejné

    Pravda, pokud A je větší nebo rovno B

    Méně nebo stejně

    Pravda, pokud A je menší nebo rovno B

    Složité podmínky se tvoří z jednoduchých pomocí logických operací a závorek. Seznam logických operací je uveden v tabulce. 3.3.

    stůl3 .3. Logické operace

    název

    Výraz

    Výsledek

    Logický
    negace

    Logické AND

    Logické NEBO

    V podmíněném příkazu je povoleno použít blok příkazů místo kteréhokoli z příkazů. V tomto případě vypadá podmíněný operátor takto:

    LiSTAVPak

    OPERATOR_BLOCK_1

    OPERATOR_BLOCK_2

    Konec IF

    V podmíněném příkazu lze zkontrolovat několik podmínek. V tomto případě vypadá podmíněný operátor takto:

    LiCONDITION_1Pak

    OPERATOR_BLOCK_1

    ElseIfCONDITION_2Pak

    OPERATOR_BLOCK_2

    Jiný

    KonecLi

    Příklad 1... Napište část programu pro algoritmus na Obr. 3.3.

    Příklad 2 Napište část programu pro algoritmus na Obr. 3.4.

    3.5. Vyberte výpis případu

    Příkaz Select Case je vhodné použít, když v závislosti na hodnotě výrazu, který má konečnou sadu platných hodnot, potřebujete provést různé akce. Odkazuje také na podmíněné příkazy, ale má jinou formu:

    Vyberte případTESTED_EXPRESSION

    PřípadVALUES_1

    OPERATORS_1

    PřípadHODNOTY_ 2

    Operátoři_ 2

    . . .

    PřípadVALUES_N

    Operátoři_N

    [ PřípadJiný

    V OPAČNÉM PŘÍPADĚ_ PROVOZOVATELÉ]

    Konec Vyberte

    TESTED_EXPRESSION může být jakéhokoli skalárního typu kromě skutečného. HODNOTY sestávají z libovolného počtu hodnot nebo rozsahů oddělených čárkami.

    Typ HODNOTY musí odpovídat typu TESTED_EXPRESSION.

    Za prvé, počítá TESTED_EXPRESSION... Pokud se jeho hodnota shoduje s některou z hodnot VALUES_I, pak OPERATORS_I Konec Vyberte... Pokud se jeho hodnota neshoduje s žádnou z hodnot VALUES_I, pak OTHERWISE_OPERATORS a řízení je přeneseno na operátora stojícího poté Konec Vyberte

    Například. Napište část programu pro algoritmus na Obr. 3.5, který určuje hodnotu proměnné S v závislosti na hodnotě proměnné n.

    3.6. Operátoři smyčky

    K implementaci cyklického výpočetního procesu, tj. vícenásobného provádění jednoho nebo více operátorů, se používá operátor smyčky Pro další který má následující syntaxi:

    ProPOČÍTADLO = START_VALUETÓCON_VALUEKrokKROK

    BLOK OBSLUHY

    BLOK OBSLUHY

    dalšíČELIT

    Cyklus For ... Next iteruje hodnoty proměnné ČELIT, což je parametr cyklu, od počáteční do koncové hodnoty se zadaným krokem změny. Tím je zajištěno, že se blok příkazů těla smyčky provede při každé nové hodnotě čítače. Li KrokKROK v konstrukci chybí, pak se standardně předpokládá, že krok je 1. Podle operátora Konec pro je možné ukončit příkaz smyčky dříve ČELIT dosáhne poslední hodnoty. *

    Pro iteraci objektů ze skupiny podobných objektů, například buněk z rozsahu nebo prvků pole, je vhodné použít operátor smyčky Pro ...Každý… Další.

    Pro každéhoŽivelvSkupina

    BLOK_ Operátoři

    BLOK OBSLUHY

    dalšíŽivel

    Ve VBA se k organizaci smyček s předem určeným počtem opakování používají jiné operátory smyček:

    smyčky s předpokladem - DělatZatímcoSmyčka,

    DělatDokudSmyčka;

    smyčky s postcondition - DělatSmyčkaZatímco,

    DělatSmyčkaDokud.

    Následuje syntaxe těchto příkazů cyklu:

    „Smyčka s předpoklademDělat Zatímco Smyčka

    Dělat, zatímcoSTAV

    BLOK OBSLUHY

    BLOK OBSLUHY

    „Smyčka s předpoklademDělat Dokud Smyčka

    DělatDokudSTAV

    BLOK OBSLUHY

    BLOK OBSLUHY

    "Smyčka s dodatečnou podmínkouDělat Smyčka, zatímco

    BLOK_ Operátoři

    BLOK OBSLUHY

    Smyčka, zatímcoSTAV

    "Smyčka s dodatečnou podmínkouDělat Opakovat dokud

    BLOK_ Operátoři

    BLOK OBSLUHY

    Opakovat dokudSTAV

    Operátor DělatWAhoj... Smyčka poskytuje vícenásobné opakování bloku příkazů tak dlouho, dokud STAV je respektován a provozovatel



    Další novinky

    Použití podmíněného operátoru je nedílnou součástí téměř každého programovacího jazyka. A ve skutečnosti všechno pochází z matematiky, protože zpočátku byly programovací jazyky vytvořeny jako prostředky pro řešení různých problémů. Hned řeknu, že je článek nudný a nezajímavý, protože z programování, zejména z popisu operátorů, fyzicky nelze vymáčknout nic nového, ale něco vymyslím. A tak se v jazyce VBA používá příkaz if k testování podmínek, které mohou existovat v několika variantách. Ale nejdřív trochu humoru...

    Lesem běží zajíc a my vidíme medvěda číst knihu. Zajíc se ptá: "Clubfoot, co to čteš?" On s chytrým pohledem odpovídá: "Logika". Šikmý s překvapeným pohledem se ptá "Co je logika?" "No, podívej," říká medvěd:

    • M: Máte nějaké zápasy?
    • Z: Ne
    • M: Takže nekouříš
    • Z: Ano!
    • M: Když nekouříš, tak to není vyhazování peněz
    • Z: Správně!
    • M: Takže chodíš kolem holek?
    • Z: Samozřejmě!
    • M: A protože chodíš kolem holek, tak nejsi impotent!
    • Z: Znovu správně!

    Zajíc byl potěšen tak chytrou knihou a požádal PEC, aby si ji přečetl. Spokojeně prochází lesem a raduje se, pak k němu přichází vlk. Zajíc se rozhodl zkusit logiku na šedé a ptá se ho:

    • Z: Máte nějaké zápasy?
    • Q: Ano
    • Z: Tak ty jsi impotent!

    No, ano, převyprávěl anekdotu, jak si pamatoval

    Dobře, pojďme k teorii...

    Možnost 1... Nejjednodušší způsob použití příkazu VBA, pokud je podmíněný příkaz, je, když je podmínka zkontrolována, a pokud je splněna, provede se jeden výraz:

    Pokud podmínka, pak výraz

    Možnost 2... Může nastat situace, kdy se po kontrole podmínky musí provést několik výrazů, v takovém případě má příkaz if tvar:

    Pokud podmínka pak

    Výraz 1

    Výraz 2

    Výraz N

    Jak můžete vidět, v tomto případě je použit závěr if... end if blok, je relevantní i v případě, kdy jsou příkazy vnořeny.

    Možnost 3: Aby se zabránilo vytváření vnořených podmíněné příkazy, je použita následující konstrukce:

    Pokud podmínka pak

    Výraz 1

    Výraz 2

    Zde je vše extrémně jednoduché, pokud je podmínka pravdivá, provede se první výraz, pokud ne, provede se druhý. Je vhodné připomenout, že po kontrole stavu může následovat několik operátorů, jako ve variantě výše.

    Možnost 4: Kontrola více podmínek:

    Pokud podmínka 1, pak

    Výrazy 1

    ElseIf podmínka 2 then

    Výrazy 2

    ElseIf podmínka 3 then

    Výrazy 3

    Logika práce je následující: nejprve se zkontroluje první podmínka, zda je pravdivá, pak se provedou první výrazy a následně dojde k přechodu na operátor, který následuje po End If. Pokud není splněna první podmínka, kontroluje se druhá a tak dále, použití výrazu Else na konci je nepovinné, může následovat příkaz, který je nutné provést, pokud nebyla splněna žádná z předchozích podmínek.

    Dobře, nyní napíšeme jednoduchý příklad použití VBA if then konstrukt. Vytvořte formulář v editoru Visual Basic for Applications a přidejte na jeho povrch tři textové popisky () a jedno tlačítko (). V editoru kódu napište:

    Private Sub GetSub () Dim MySumm As Integer Dim MyVar As Byte MyVar = 0 Do While MySumm<= 10000 MySumm = MySumm + 1 If MySumm = 10 Then Label1.Caption = "Částka dosáhla 10" ElseIf MySumm = 100 Then Label2.Caption = "Částka dosáhla 100" ElseIf MySumm = 1000 Then Label3.Caption = "Částka dosáhla 1000" Else Label4.Caption = Hodnota dosažena& MySumm End If Loop End Sub Private Sub CommandButton1_Click () Volání GetSub End Sub Private Sub UserForm_Initialize () Label1.Caption = "" Label1.FontSize = 13 Label1.ForeColor = vbRed Label2.Caption = "" Label2.Font Label2 = 13. ForeColor = vbGreen Label3.Caption = "" Label3.FontSize = 13 Label3.ForeColor = vbBlue Label4.Caption = "" Label4.FontSize = 13 CommandButton1.Caption = "Execute" End Sub

    V proceduře GetSub se používá smyčka, podmínkou pro provedení smyčky je, že hodnota proměnné MySumm musí být menší nebo přesně 10000. V těle samotné smyčky jsou příkazy VBA if then s několika možnostmi použitý. Kontrolují se podmínky: pokud součet dosáhl hodnoty 10, zapište jednu informaci do prvního textového pole, pokud 100 - ostatní informace, pokud 1000 - třetí informace, jinak - zapište údaje do vlastnosti Caption čtvrtého textu pole.