Računalniki Windows Internet

Če je opis vba excel. Metodična navodila in naloge. Če pogoj potem izraz

Izjava If...Then...Else.

Ta lekcija bo posvečena temi, kot so - operaterji. Predvsem se bomo seznanili z operatorjem If...Then...Else ter se seznanili z aritmetičnimi in primerjalnimi operatorji, brez katerih operatorja If...Then...Else ni mogoče maksimalno uporabiti. .

Visual Basic ima precej veliko število različnih operaterjev, od katerih lahko nekateri zavrejo možgane še tako izkušenemu programerju. Da ne bi "zavreli", bomo upoštevali le najosnovnejše operaterje, na katerih deluje 95% programov, preostale operaterje bomo preučili po potrebi, tako da vam ni treba zapomniti celega učbenika in lahko takoj nadaljujete na praktične vaje.

S postavitvijo te lekcije mislim, da imate znanje s področja matematike v osnovnih razredih.
Kakšno znanje? To so isti primeri, v katerih smo odštevali, seštevali, množili, ... Se spomnite tega? odlično! V smodnišnicah je torej še vedno smodnik.

Preden nadaljujemo s preučevanjem operatorja If...Then...Else, se je treba seznaniti z aritmetičnimi in logičnimi operatorji, brez katerih operatorja If...Then...Else ni mogoče uporabiti pri nas iz z vidika globoke prakse. V redu, dovolj dolgočasnih navodil in digresij, udobno se usedite, se bomo lotili posla!

Aritmetični operatorji
S temi operaterji lahko; deliti, pomnožiti, sešteti itd.
Vse je tako preprosto kot v osnovni šoli.

+ (dodatek)
- (odštevanje)
* (množenje)
/ (deljenje z ostankom) v šoli je bil znak delitve ta znak : zapomnite si te razlike in ne zamenjujte
\ (celoštevilsko deljenje, brez ostanka)

Operatorji primerjave
To so precej pomembni operaterji. Te operatorje lahko uporabite za primerjavo števil, nizov in drugih podatkov. Brez primerjalnih operaterjev je nemogoče zgraditi logiko ali razvejanje v programu.
Pomembno si je zapomniti, da primerjalni operatorji primerjajo dva izraza in vrnejo logično vrednost True (če je pogoj resničen) in False (če pogoj ni resničen).
True v prevodu iz angleščine pomeni - Resnica
False v prevodu iz angleščine pomeni - Laž
Na poti se morda zdi nerazumljivo, a brez skrbi, malo nižje boste razumeli, kaj ves ta pekel pomeni.

= (enako)
Vrednost prvega izraza je enaka vrednosti drugega izraza ali pa je rezultat seštevanja/odštevanja/... dveh izračunov.

<> (neenakost)
Vrednost prvega izraza ni enaka vrednosti drugega izraza

< (manj)
Vrednost prvega izraza je manjša od vrednosti drugega izraza

> (več)
Vrednost prvega izraza je večja od vrednosti drugega

<= (manj ali enako)
Vrednost prvega izraza je manjša ali enaka vrednosti drugega

>=
(več ali enako)
Vrednost prvega izraza je večja ali enaka vrednosti drugega

Vidim, vidim, da si se že ustrašil, pravzaprav ni razloga za skrb!
Preberite in videli boste, da je vse zelo preprosto.
V nadaljevanju bomo vse skupaj temeljito podkrepili s primeri in v praksi.
In tako, upoštevali smo aritmetične in logične operatorje, zdaj lahko greste neposredno na sam operator If ... Then ... Else

Izjava If...Then...Else
Najprej poglejmo, kaj pomenijo besede operaterja, če so prevedene iz angleščine v ruščino.
Če se prevede kot Če
Potem se prevede kot To
Else se prevaja kot drugače

Za kaj se uporablja stavek If...Then...Else?
S pomočjo tega operatorja lahko razvejate programe, brez tega operatorja je nemogoče napisati resen program.
Pojdimo k tipičnim primerom.

Kako računalnik obdela stavek If...?
Recimo, da imamo dve spremenljivki:

Dim var1 = 10 Dim var2 = 5

in recimo, da imamo pogoj:

If var1 > var2 Then MsgBox("Da, var1 je večji od var2") End If

Kako deluje zgoraj prikazano stanje?
Računalnik bo pogledal spremenljivki var1 in var2, če je var1 res večja od var2, potem je pogoj resničen (True - True) in računalnik bo prikazal MsgBox.
Če pogoj ni resničen (False - False), potem računalnik ne bo prikazal polja MsgBox.
To lahko preverite tako, da spremenite vrednosti spremenljivk v druge številke, tako da pogoj ni resničen, potem ne bomo videli polja MsgBox.

Pozor!

Treba je preučiti primere.
Po izdelavi projekta na obrazcu morate nato z levim gumbom miške dvakrat klikniti na gumb, odpre se urejevalnik kode, kazalec pa se postavi na mesto, kamor želite vstaviti kodo iz spodnjih primerov.
Po vnosu kode si morate ogledati rezultat s klikom na gumb na obrazcu.


Primeri
Naslednji primeri bodo podani v naslednjem vrstnem redu.

Aritmetični operatorji
+ (dodatek)
- (odštevanje)
* (množenje)
/ (delitev)

Spojler: Aritmetični primeri - KLIK

+ Dodatek:

"Primer prikazuje, kako sešteti dve števili. Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 + chislo2 MsgBox(resultat)

- Odštevanje:

"Primer prikazuje, kako lahko dobite razliko dveh števil (odštevanje) Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 - chislo2 MsgBox(rezultat)

* Množenje:

"Primer prikazuje, kako lahko pomnožite eno število z drugim. Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 * chislo2 MsgBox(resultat)

/ Oddelek:

"Primer prikazuje, kako lahko eno število delite z drugim. Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 / chislo2 MsgBox(resultat)

Operatorji primerjave
= (enako)
<> (neenakost)
< (manj)
> (več)
<= (manj ali enako)
>= (več ali enako)

Spojler: Primerjalni operatorji - KLIK

= je enako:

"Primer prikazuje, kako lahko ugotovite, ali je besedilo v spremenljivki enako drugemu besedilu, ki smo ga podali Dim stroka As String = "Hi NubClub!" "Če je stroka enako besedilu v dvojnih narekovajih, mi pokaži MsgBox If stroka = "Živjo NubClub!" Nato MsgBox("Spremenljivka je enaka besedilu, ki ga iščemo!") End If

<>Neenakost:

"Primer prikazuje, kako lahko ugotovite, ali je besedilo v spremenljivki enako drugemu besedilu, ki smo ga podali. Dim stroka As String = "Hi NubClub!" "Če stroka ni enako besedilu v dvojnih narekovajih, mi pokaži MsgBox Če stroka<>"Sem programer začetnik" Potem MsgBox("Besedilo v spremenljivki stroka ni enako besedilu v narekovajih!") End If

< Меньше:

"Primer prikazuje, kako lahko primerjate dve števili. Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Če je chislo2 manjše od chislo1, mi pokaži MsgBox If chislo2< chislo1 Then MsgBox("Значение переменной chislo2 меньше значения переменной chislo1") End If

> Več:

"Ta primer prikazuje, kako primerjati dve števili. Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Če je chislo1 večje od chislo2, mi pokaži MsgBox If chislo1 > chislo2 Then MsgBox("Chislo1 je večje od chislo2") End If

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

"Primer prikazuje, kako primerjati dve števili Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Če je chislo2 manjše ali enako chislo1, mi pokaži MsgBox If chislo2<= chislo1 Then MsgBox("Значение переменной chislo2 меньше или равно значению переменной chislo1") End If

>= Večje ali enako:

"Primer prikazuje, kako primerjati dve števili Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Če je chislo1 večje ali enako chislo2, mi pokaži MsgBox If chislo1 >= chislo2 Then MsgBox("Vrednost chislo1 je večja kot ali enaka vrednosti chislo2" ) End If

Izjava If...Then...Else - Razvejanje
Zgoraj je bilo podanih precej preprosti primeri z uporabo pogojev If...Then, tj. brez razvejanja in brez uporabe Else.
Zdaj pa poglejmo primere z razvejanostjo, so malo bolj zapleteni, vendar brez njih ne gre.
V bistvu bodo z uporabo Else vsi primeri ostali enaki kot zgoraj, dodana bo le majhna veja programa.
Kaj bo dodano?
Če smo prej imeli MsgBox prikazan le, ko je bil pogoj resničen, potem je z uporabo Else možno poklicati MsgBox tudi, ko pogoj ni resničen.

In tako, primer.

"Primer prikazuje, kako lahko ugotovite, ali je besedilo v spremenljivki enako drugemu besedilu, ki smo ga podali Dim stroka As String = "Hi NubClub!" "Če je stroka enako besedilu v dvojnih narekovajih, mi pokaži MsgBox z besedilom - Spremenljivka je enaka besedilu, ki ga iščemo! "Če stroka NI ENAKA besedilu v dvojnih narekovajih, potem mi pokaži MsgBox z besedilom - Spremenljivka ni enaka besedilu, ki ga iščemo! Če stroka = "Hi NubClub!" Potem MsgBox("Spremenljivka je enako besedilu, ki ga iščemo!") Else MsgBox( "Spremenljivka ni enaka besedilu, ki ga iščemo!") End If

Včasih imamo eno spremenljivko in več vrednosti​​z besedilom, ki jih je treba preveriti. Kaj potem narediti? Sleči hlače in teči?
Ne, to ni naša metoda.
Obstaja bolj elegantna rešitev. Svoj pogoj lahko zakompliciramo z ElseIf in tako preverimo kolikor želimo vrstic, seveda v razumnih mejah. Če je vrstic veliko, bodo na pomoč priskočile zanke, s katerimi bomo delali v naslednjih lekcijah.

Razmislite o primeru.
Predstavljajmo si, da moramo ustvariti logiko za ulično luč, da deluje in prikazuje barve.
Kako narediti?
Pravzaprav ni težko, npr.

V Visual Basicu za aplikacije (VBA) obstaja več načinov za spreminjanje vrstnega reda izvajanja stavkov. Kontrolne strukture v VBA so v mnogih pogledih podobne tistim v drugih programskih jezikih.

Osnovne nadzorne strukture VBA:

  • Če potem drugače "Konec če
  • Za naprej
  • Medtem ko Wend
  • Naredi Loop
  • Izberite Case "End Select
  • Za vsak naslednji

    Kontrolno navodilo If Then Else "End If
    To navodilo spremeni vrstni red, v katerem se izvajajo navodila glede na rezultate testiranja danega pogoja (ali niza pogojev)

    primer:

    Sub TestIfThen()

    iData = "pashulka"

    Če iData = "Excel" Potem
    MsgBox "Nikoli ne boste videli tega sporočila!!!"
    ElseIf iData = "Office" Potem
    MsgBox "Oprostite, tudi tega sporočila ne boste videli!!!"
    drugače
    MsgBox "To sporočilo se bo vseeno prikazalo", iData
    Konec, če

    Komentarji:
    če - ključna beseda, ki označuje začetek testa
    iData- spremenljivka, katere vrednost bo preverjena
    Potem- ključna beseda, ki pomeni konec preverjanja
    MsgBox- sporočilo
    ElseIf- ključna beseda, ki označuje začetek novega preverjanja
    Potem- ključna beseda, ki pomeni konec dodatnega preverjanja
    MsgBox- sporočilo
    drugače- ključna beseda, ki pomeni konec bloka ukazov, izvedenega s pozitivnim rezultatom preverjanja, in začetek bloka ukazov, izvedenega z negativnim rezultatom.
    MsgBox- sporočilo
    Konec, če

    V stavku If Then Else "End If" ključne besede ElseIf in drugače so neobvezne.

    Za naslednjo kontrolno izjavo
    To navodilo vam omogoča, da določena dejanja izvedete želeno število krat. Takšna navodila se običajno imenujejo zanke.

    primer:

    Sub TestForNext()

    Za iCount = 1 do 100 2. korak
    i = i + 1
    Naslednji

    Komentarji:
    Za
    iCount- spremenljivka, ki določa število ponovitev zanke.
    1 - začetna vrednost števca
    Za- ključna beseda, ki ločuje začetno in končno vrednost števca
    100 - končna vrednost števca
    korak- ključna beseda, ki določa korak števca
    2 - števec korak (število)
    Naslednji- ključna beseda, pri kateri se vrednost števca spremeni za vrednost koraka, po kateri se krmiljenje ponovno premakne na začetek zanke.
    MsgBox

    V stavku For Next ključna beseda korak ni obvezna. Če ga ni, bo korak izvajanja števca enak 1.

    pomembno Korak števca mora biti številka. Če je korak števca določen kot negativno število, se bo vrednost števca z vsakim ciklom zmanjšala.

    Primer z odštevanjem:

    Sub TestForNext2()

    Za iCount = 300 za 1 korak -3
    i = i + 1
    Če je iCount = 153, potem izhod za
    Naslednji iCount

    MsgBox "Število ponovitev: " & i

    Bodi pozoren na:
    če iCount = 153 Potem- v tej kodi VBA smo uporabili stavek If Then Else, ki ga že poznamo
    Izhod za
    Naslednji iCount- v kodi je spremenljivka (števec), ki se nahaja za ključno besedo. Ta sintaksa se običajno uporablja za vizualna definicija konec zanke, če je v kodi VBA veliko takih navodil.

    Medtem ko Wend nadzorna izjava
    To navodilo vam omogoča izvajanje določenih dejanj, dokler je izpolnjen podani pogoj.

    primer:

    Sub TestWhileWend()

    Medtem ko je iCount iCount = iCount + 1
    Wend

    Komentarji:
    Medtem- ključna beseda, ki pomeni začetek cikla
    iCount - pogoj, pod katerim bo ta ukaz izveden
    Wend
    MsgBox- sporočilo o številu ponovitev

    Izvedite navodila za nadzor zanke
    To navodilo vam omogoča izvajanje določenih dejanj ne le, dokler je izpolnjen podani pogoj, ampak obratno, dokler ni izpolnjen podani pogoj.

    primer:

    Sub TestDoLoop()

    Naredite, dokler iCount >= 100
    iCount = iCount + 1
    zanka

    MsgBox "Število ponovitev: " & iCount

    Komentarji:
    naredi- ključna beseda, ki pomeni začetek cikla
    dokler- ključna beseda, ki označuje prisotnost stanja
    iCount >= 100- pogoj, pod katerim bo to navodilo izvršeno
    zanka- ključna beseda, ki pomeni konec cikla
    MsgBox- sporočilo o številu ponovitev

    Sub TestDoLoop2()

    naredi
    iCount = iCount + 1
    Če je iCount = 50, potem zapustite Do
    Zanka do iCount = 100

    MsgBox "Število ponovitev: " & iCount

    Bodi pozoren na:
    če iCount = 50 Potem- v tej kodi VBA smo ponovno uporabili nam že znani stavek If Then Else
    Izhod Do- navodilo, ki pomeni zgodnji izstop iz zanke
    iCount = 100- pogoj, pod katerim bo to navodilo izvršeno

    Opomba:
    Pogoj, podan na koncu zanke, zagotavlja, da bo zanka izvedena vsaj enkrat. Bodite previdni pri navodilih While Wend, Do Loop, saj lahko ob nepravilni nastavitvi pogoja dobite skoraj perpetuum mobile.

    Navodilo za nadzor Select Case "End Select
    To navodilo izvede enega od več delov kode, odvisno od rezultatov vrednosti spremenljivke ali izraza.

    primer:

    Sub TestSelectCase()

    Izberite Case iNumeric
    Primer 1

    Primer 2, 5
    MsgBox "Tega sporočila ne bi smeli videti"
    Primeri od 10 do 13
    MsgBox "Tega sporočila ne bi smeli videti"
    Primer je > 14
    MsgBox "To je sporočilo, ki bi ga morali videti"
    Drug primer
    MsgBox "To sporočilo se prikaže, če je spremenljivka End Select

    Komentarji:
    Izberite Primer
    iNumeric- spremenljivka ali izraz, katerega vrednost določa izbiro fragmenta kode VBA za izvajanje
    Primer 1- prva vrednost za primerjavo.
    Če se vrednost spremenljivke ujema z njo, bo izveden fragment kode, ki sledi primeru, vendar pred naslednjim ključnim primerom, bo navodilo dokončalo svoje delo. V nasprotnem primeru se bo preverjanje nadaljevalo.
    Primer 2, 5- vrednost druge možnosti.
    Primeri od 10 do 13- vrednost tretje opcije.
    Primer je > 14- četrta možnost.
    MsgBox- sporočilo, ki se prikaže v tem primeru
    Drug primer- ključne besede, ki pomenijo izvedbo kode, če se nobena od prejšnjih možnosti ne ujema.
    Konec Izberite- ključna beseda, ki pomeni konec navodila

    V izjavi Select Case "End Select keyword Drug primer ni obvezna.

    Za vsako naslednjo kontrolno izjavo
    To navodilo vam omogoča izvajanje določenih dejanj z vsakim družinskim objektom ali elementom niza.

    Primer z objektom Range:

    Sub TestForEachNextRange()


    i = i + 1
    iCell.Value = "(!LANG:celica #" & i !}
    Naslednji

    MsgBox "Število celic: " & i

    Komentarji:
    Za vsakogar- ključne besede, ki označujejo začetek navodila
    iCell- spremenljivka, ki so ji dodeljene vrednosti elementov skupine (matrike ali družine). Za delo z elementi matrike mora spremenljivka pripadati vrsti Variant.
    notri- ključna beseda, ki ločuje spremenljivko od skupine
    Obseg ("A1:C5")- skupina, tj. matriko ali družino predmetov. Število ponovitev zanke je odvisno od števila elementov v skupini. Ko se zanka prvič izvede, se spremenljivki dodeli vrednost prvega elementa skupine, nato pa vse naslednje.
    Naslednji- ključna beseda, ko je dosežena, se krmiljenje ponovno premakne na začetek zanke.
    MsgBox- sporočilo o številu elementov skupine.

    V tem primeru uporaba podobnega števila celic v objektu Range ni najboljši način, saj ima ta objekt lastnost, ki se bo veliko bolje spopadla s to nalogo: Objekt obsega: njegove lastnosti in metode


  • Primer ravnanja z objektom Range:

    Sub TestForEachNextRangeChanges()

    Za vsako iCell v območju ("A1:C5")

    i = i + 1: iCell.Value = i

    Če je iCell.Vrednost 5 Potem
    iCell.Font.Size = 15
    iCell.Interior.ColorIndex = 50
    ElseIf iCell.Value = 13 ali iCell.Value = 5 Potem
    iCell.Font.Size = 20
    iCell.Interior.ColorIndex = 3
    drugače
    iCell.Počisti
    Konec, če

    Bodi pozoren na:
    - v tej kodi VBA smo za preverjanje vrednosti v celici uporabili nam že poznano izjavo If Then Else.
    - glede na to, kateri pogoj je prestal test, se izvede določen del kode, ki uporablja različne lastnosti objekta Range.

    Primer z družino delovnih listov:

    Sub TestForEachNextSheet()

    Za vsak iList v delovnih listih
    i = i + 1
    iNameList = iNameList & Chr(10) & iList.Name
    Naslednji

    MsgBox "Število delovnih listov: " & i & Chr(10) & _
    "Imena delovnih listov: " & iNameList

    V tem primeru uporaba podobnega števila delovnih listov ni najboljši način, saj ima ta objekt tudi lastnost, ki se bo veliko bolje spopadla s to nalogo.

    Pogoji so zelo uporabni pri programiranju, saj nam omogočajo izvajanje dejanj na podlagi nastavljenih kriterijev (z uporabo istega principa kot v ČE Excelove funkcije).

    Najpomembnejša funkcija, ki postavlja pogoj, je ČE in zdaj bomo videli, kako deluje:

    Če [POGOJ TUKAJ] Then "=> ČE je pogoj resničen THEN "Navodila, če je 'true' Else" => OTHER "Navodila, če je 'false' End If

    Pojdimo praktično in se vrnimo k primeru, ki smo ga uporabili v vadnici za spremenljivke. Namen tega postopka je bil odpreti pogovorno okno, ki bi vsebovalo vrednost iz niza, navedenega v celici F5:

    Če vnesete črko v celico F5, bo ustvaril napako. To želimo preprečiti.

    Podspremenljivke () "Deklariranje spremenljivk Dim last_name As String, first_name As String, age As Integer, row_number As Integer "Dodeljevanje vrednosti spremenljivkam row_number = Range("F5") + 1 last_name = Celice(row_number, 1) first_name = Cells(row_number , 2) age = Cells(row_number, 3) "Pogovorno okno MsgBox last_name & " " & first_name & "," & age & " years" End Sub

    Dodajmo še pogoj, ki bo preverjal, če je vnesena vrednost v celici F5številko, preden se koda izvede.

    Uporabili bomo funkcijo IsNumeric za testiranje stanja:

    Podspremenljivke () "Če je vrednost v oklepajih (celica F5) številska (IN ZATO JE POGOJ IF TRUE), potem "izvedite stavke, ki sledijo THEN If IsNumeric (Range("F5")) Potem "Deklariranje spremenljivk Dim last_name As String , first_name As String, age As Integer, row_number As Integer "Dodelitev spremenljivke row_number = Range("F5") + 1 last_name = Cells(row_number, 1) first_name = Cells(row_number, 2) age = Cells(row_number, 3) "Pogovorno okno MsgBox last_name & " " & first_name & "," & age & " years" End If End Sub

    Napisati moramo tudi navodila, če pogoj, ki smo ga postavili, ni izpolnjen:

    Podspremenljivke () If IsNumeric (Range("F5")) Then "Če je pogoj resničen" Razglasitev spremenljivk Dim last_name As String, first_name As String, age As Integer, row_number As Integer "Dodeljevanje vrednosti spremenljivkam row_number = Range ("F5") + 1 last_name = Cells(row_number, 1) first_name = Cells(row_number, 2) age = Cells(row_number, 3) "Pogovorno okno MsgBox last_name & " " & first_name & ", " & age & " years " Else "Če pogoj ne uspe "Pogovorno okno: MsgBox opozorilo "Vnesena vrednost " & Range("F5") & " ni veljavna!" "Počisti vsebino obsega celice F5 ("F5"). ClearContents End If End Sub

    Zdaj neštevilska vrednost ne bo povzročala težav.

    Pri delu z našo matriko, ki vsebuje 16 vrstic podatkov, bo naš naslednji korak preveriti, ali je row_number "večje ali enako 2" in "manjše ali enako 17".

    Najprej pa si poglejmo primerjalne operatorje:

    in ti uporabni operaterji:

    Zdaj pa dodajmo enega od zgornjih pogojev IN med operaterji primerjave:

    Podspremenljivke () If IsNumeric (Range("F5")) Then "If numeric 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 In številka_vrstice

    Če želimo narediti naš makro bolj praktičen, ga lahko zamenjamo 17 na spremenljivko, ki bi vsebovala število vrstic. To bi nam omogočilo dodajanje in odstranjevanje vrstic iz matrike, ne da bi morali vsakič spremeniti to omejitev.

    Da bi to naredili, moramo ustvariti spremenljivko nb_vrstic in dodajte to funkcijo.

    V tem primeru uporabimo funkcijo WorksheetFunction.CountA, kar je analogno funkciji COUNTA v samem Excelu.

    Želimo, da ta funkcija prešteje število nepraznih celic v prvem stolpcu in zapiše dobljeno vrednost v spremenljivko nb_vrstic:

    Podspremenljivke () 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")) "Funkcija štetja vrstic, če je row_number >= 2 In row_number

    ElseIf

    ElseIf omogoča dodajanje dodatnih pogojev za ukazom IF:

    If [POGOJ 1] Then "=> IF pogoj 1 je resničen, THEN "Statements 1 ElseIf [CONDITION 2] Then "=> IF pogoj 1 je napačen, toda pogoj 2 je resničen, THEN "Statements 2 Else" => ELSE " Izjave 3 End If

    Če POGOJ 1 izvedel, Navodilo 1 se bo izvršil in operater bo zapustil ČE(ki se začne z ČE in se konča z End If). Če POGOJ 2 prevzame vrednost " False «, potem bo izvedena Navodilo 2, in če se vrne " False ", potem Navodilo 3(Spodaj drugače) bodo izvedeni.

    Sub scores_comment() "Spremenljivke Dim note As Integer, score_comment As String note = Range("A1") "Komentarji glede na rezultat If note = 6 Then score_comment = "Odličen rezultat!" ElseIf note = 5 Then score_comment = "Dober rezultat" ElseIf note = 4 Then score_comment = "Fair score" ElseIf note = 3 Then score_comment = "Nezadovoljiv rezultat" ElseIf note = 2 Then score_comment = "Slab rezultat" ElseIf note = 1 Potem score_comment = "Grozna ocena" Else score_comment = "Nič ocene" End If "Komentar v celici B1 Range("B1") = score_comment End Sub

    Izberite

    Obstaja alternativa uporabi če z mnogimi ElseIf navodila, in sicer ukaz Izberite ki je bolj primeren za tovrstne situacije.

    Razmislite o primeru makra z operatorjem Izberite:

    Sub scores_comment() "Spremenljivke Dim note As Integer, score_comment As String note = Range("A1") "Komentarji na podlagi prejete ocene Izberite Case note "

    Omeniti velja, da bi lahko uporabili tudi druge primerjalne operaterje:

    Primer je >= 6, če je vrednost >= 6

    Primeri z različnimi vrednostmi:

    Primer je = 6, 7 "če je vrednost = 6 ali 7 Primer je 6, 7", če vrednost ni 6 ali 7 Primer 6 do 10 "če je vrednost = katero koli število med 6 in 10

    Operatorji osnovnega jezika VBA

    Komentarji (0)

    3.1. Pravila za snemanje operaterja

    Pri pisanju operatorjev se morate držati naslednjih pravil:

    Vsaka nova izjava je zapisana v novo vrstico.

    Če želite napisati več stavkov v eno vrstico, jih ločite z dvopičjem (:).

    Če izjava ne sodi v eno vrstico, morate na koncu vrstice postaviti presledek in podčrtaj (_), nato pa del, ki ne sodi, nadaljevati v naslednji vrstici.

    3.2. operater dodelitve

    Operator dodelitve se uporablja, ko je treba spremenljivki dodeliti novo vrednost. Ima naslednjo sintakso:

    VARIABLE_NAME= IZRAZ

    Najprej se ovrednoti izraz na desni strani, nato pa se rezultat dodeli spremenljivki na levi strani.

    Na primer. Zapišite naslednji matematični izraz z uporabo operatorja dodelitve:

    V VBA lahko ta izraz zapišemo kot naslednji stavek:

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

    3 .3. I/O izjave

    3 .3.1. Operator in funkcija MsgBox

    Operater MsgBox prikaže informacije v pogovornem oknu in nastavi način čakanja na klik uporabnika.

    Ima naslednjo sintakso:

    MsgBox Sporočilo [,Gumbi][, Naslov]

    Argumenti:

    Sporočilo - obvezni argument, ki določa prikazano informativno sporočilo v oknu. Lahko je sestavljen iz več besedilnih vrstic, ki jih povezuje znak & . Uporaba v tem argumentu Chr (13) vodi do prehoda v nova vrstica pri izpisu informacij.

    Gumbi - vrednost tega argumenta določa kategorije gumbov, ki se prikažejo v oknu. Vrednost argumenta gumb tudi določa, ali se ikona pojavi v oknu. Če ne določite, kateri gumbi naj se prikažejo v sporočilnem polju, se uporabi privzeta vrednost, ki ustreza gumbu V redu. V tabeli. 3.1 prikazuje možne kombinacije gumbov in ikon v oknu s sporočili.

    glava - nastavi naslov okna.

    funkcija MsgBox vrne celo število, ki označuje, kateri gumb je bil kliknjen v pogovornem oknu.

    Tabela 3.1. Veljavne vrednosti spremenljivke gumba

    Zaslon

    Prepir

    gumb OK

    Gumba V redu in Prekliči

    Gumba Da in Ne

    Gumbi Da, Ne in Prekliči

    Gumbi Prekini, Poskusi znova in Prezri

    VbAbortRetryIgnore

    Gumba Ponovi in ​​Prekliči.

    informacijski znak

    Vprašaj

    Klicaj

    Na primer. Prikažite sporočilo o trenutnem datumu.

    MsgBox "Danes na koledarju" & Datum, "Pozor"

    Posledično se bo prikazalo naslednje okno (slika 3.1).

    Ko kliknete gumb OK, se okno s sporočilom zapre in izvajanje programa se nadaljuje od stavka takoj po klicu MsgBox.

    3.3.2. funkcija InputBox

    funkcija InputBox izvaja vnos vrednosti spremenljivk z uporabo vnosnega okna in ima naslednjo sintakso:

    Ime_spremenljivke = InputBox(Sporočilo[, Naslov] )

    Argumenti:

    Sporočilo je obvezen argument. Podaja informativno sporočilo v oknu, ki običajno pojasnjuje pomen vnesene vrednosti

    glava - nastavi naslov okna.

    Na primer, Vnesite vrednost spremenljivke N s tipkovnico in zagotovite privzeto vrednost 10.

    Za to lahko uporabite naslednji operator:

    N = InputBox("Vnesite N", "Vnos podatkov",10)

    Posledično se prikaže naslednje okno za vnos vrednosti spremenljivke N (slika 3.2).

    Če privzeta vrednost ustreza uporabniku, se po kliku na gumb V redu vnosno okno zapre, spremenljivki N se dodeli vrednost 10 in izvajanje programa se nadaljuje od stavka takoj po klicu. InputBox.

    Če privzeta vrednost ni primerna za uporabnika, morate pred klikom na gumb V redu vnesti želeno vrednost spremenljivka N.

    3 .štiri. Pogojni stavek IF

    Za izvedbo razvejanega računalniškega procesa v VBA se uporablja operator Če … Potem … Drugače, ki je najenostavnejša oblika preverjanja stanja. Ima naslednjo sintakso:

    čePOGOJPotemOPERATOR_1ElseOPERATOR_2

    OPERATOR_1 se izvaja, če POGOJ res, drugače izvršeno OPERATOR_2. V tem primeru je stavek If…Then…Else zapisan v eni vrstici.

    POGOJ je logični izraz. Rezultat izraza je vedno logičnega tipa. Izraz je lahko preprost ali zapleten. Pri pisanju enostavnih pogojev lahko uporabimo vse možne relacijske operacije, navedene v tabeli 1. 3.2.

    Tabela3 .2. Logične relacije

    Delovanje

    Ime

    Izraz

    Rezultat

    Res je, če je A enako B

    Res je, če A ni enako B

    Res je, če je A večji od B

    Res je, če je A manjši od B

    Več ali enako

    Res je, če je A večji ali enak B

    Manj ali enako

    Res je, če je A manjši ali enak B

    Kompleksni pogoji nastanejo iz preprostih z uporabo logične operacije in okrogle oklepaje. Seznam logičnih operacij je podan v tabeli. 3.3.

    Tabela3 .3. Logične operacije

    Ime

    Izraz

    Rezultat

    Boolean
    zanikanje

    logični IN

    Logični ALI

    V pogojnem stavku lahko namesto katerega koli stavka uporabite blok stavkov. V tem primeru je pogojni operator videti takole:

    čePOGOJPotem

    OPERATOR_BLOCK_1

    OPERATOR_BLOCK_2

    Konec If

    V pogojnem stavku je mogoče preizkusiti več pogojev. V tem primeru je pogojni operator videti takole:

    čePOGOJ_1Potem

    OPERATOR_BLOCK_1

    ElseIfPOGOJ_2Potem

    OPERATOR_BLOCK_2

    drugače

    Konecče

    Primer 1. Napišite del programa za algoritem na sl. 3.3.

    Primer 2 Napišite del programa za algoritem na sl. 3.4.

    3.5. Izberite Izjava o primeru

    Stavek Select Case je primeren za uporabo, ko morate glede na vrednost nekega izraza, ki ima končen niz veljavnih vrednosti, izvesti različna dejanja. Velja tudi za pogojne stavke, vendar ima drugačno obliko:

    Izberite PrimerEXPRESSION_CHECKED

    OvitekVALUES_1

    OPERATORS_1

    OvitekVREDNOTE_ 2

    OPERATERJI_ 2

    . . .

    OvitekVALUES_N

    OPERATERJI_N

    [ Ovitekdrugače

    DRUGAČE_ OPERATERJI]

    Konec Izberite

    EXPRESSION_CHECKED je lahko katere koli skalarne vrste, razen realne. VREDNOTE sestavljeni iz poljubnega števila vrednosti ali obsegov, ki so med seboj ločeni z vejicami.

    Tip VREDNOTE mora ustrezati vrsti EXPRESSION_CHECKED.

    Najprej izračunano EXPRESSION_CHECKED. Če se njegova vrednost ujema z eno od vrednosti VALUES_I, potem OPERATORS_I Konec Izberite. Če se njegova vrednost ne ujema z nobeno od vrednosti VALUES_I, potem ELSE_OPERATORS in nadzor se prenese na operaterja, ki stoji za njim Konec Izberite

    Na primer. Napišite del programa za algoritem na sl. 3.5, ki določa vrednost spremenljivke S v odvisnosti od vrednosti spremenljivke n.

    3.6. Stavki zanke

    Za izvedbo cikličnega računskega procesa, to je večkratnega izvajanja enega ali več operatorjev, se uporablja operator cikla Za … Naprej, ki ima naslednjo sintakso:

    ZaŠTEVEC=INIT_VREDNOSTToEND_VALUEkorakKORAK

    OPERATOR_BLOK

    OPERATOR_BLOK

    NaslednjiŠTEVEC

    Za…Naslednja zanka ponavlja vrednosti spremenljivke ŠTEVEC, ki je parameter zanke, od začetne do končne vrednosti z navedenim korakom spremembe. To zagotavlja, da se blok stavkov telesa zanke izvede z vsako novo vrednostjo števca. Če korakKORAK v konstrukciji ni, potem se privzeto šteje, da je korak enak 1. Glede na operaterja Izhod za lahko pred tem zapustite stavek zanke ŠTEVEC doseže zadnjo vrednost.*

    Za ponavljanje predmetov iz skupine podobnih predmetov, kot so celice iz obsega ali elementi niza, je priročno uporabiti operator zanke Za…Vsak … Naslednji.

    Za vsakogarElementnotriskupina

    BLOKIRAJ_ OPERATERJI

    OPERATOR_BLOK

    NaslednjiElement

    V VBA se drugi stavki zanke uporabljajo za organiziranje zank z vnaprej neznanim številom ponovitev:

    zanke s predpogojem - narediMedtemzanka,

    naredidoklerzanka;

    zanke s postpogojem - naredizankaMedtem,

    naredizankadokler.

    Spodaj je sintaksa teh stavkov zanke:

    " Zanka s predpogojemnaredi Medtem zanka

    Naredi MedtemPOGOJ

    OPERATOR_BLOK

    OPERATOR_BLOK

    " Zanka s predpogojemnaredi dokler zanka

    naredidoklerPOGOJ

    OPERATOR_BLOK

    OPERATOR_BLOK

    " Zanka s postpogojemnaredi zanka medtem

    BLOKIRAJ_ OPERATERJI

    OPERATOR_BLOK

    zanka medtemPOGOJ

    " Zanka s postpogojemnaredi Zanka do

    BLOKIRAJ_ OPERATERJI

    OPERATOR_BLOK

    Zanka doPOGOJ

    Operater narediWhile…Loop zagotavlja, da se blok stavkov večkrat ponovi, dokler POGOJ se opazuje in operater



    Druge novice

    Uporaba pogojnega operatorja je sestavni del skoraj vsakega programskega jezika. In pravzaprav vse izhaja iz matematike, saj so bili sprva programski jeziki oblikovani kot sredstvo za reševanje različnih problemov. Takoj bom rekel, da je članek dolgočasen in nezanimiv, saj je preprosto fizično nemogoče iztisniti nekaj novega iz programiranja, zlasti iz opisa operaterjev, vendar bom prišel do nečesa. In tako se v jeziku VBA stavek if uporablja za preverjanje pogojev, ki lahko obstajajo v več različicah. Ampak najprej malo humorja...

    Zajec teče skozi gozd in vidimo medveda, ki bere knjigo. Zajček vpraša: "Nerodni, kaj bereš?" Odgovori inteligentno: "Logika." Oblique s presenečenim pogledom vpraša: "Kaj je logika?" "No, poglej," pravi medved:

    • M: Ali imaš vžigalice?
    • Z: Ne
    • M: Torej ne kadiš
    • Z: Ja!
    • M: Če ne kadite, potem ni dodatne porabe denarja.
    • Z: Prav!
    • M: Torej hodiš za dekleti?
    • Z: Seveda!
    • M: In če hodiš za puncami, potem nisi impotenten!
    • Z: Spet prav!

    Zajček je bil navdušen nad tako pametno knjigo in je prosil klanca, naj jo prebere. Zadovoljen in vesel se sprehaja po gozdu, nato mu pride naproti volk. Zajček se je odločil poskusiti z logiko na sivem in ga vpraša:

    • Z: Imaš vžigalice?
    • B: Da
    • Z: Torej si impotenten!

    No, ja, vic sem ponovil, kot sem se spomnil

    V redu, zdaj pa pojdimo k teoriji ...

    Možnost 1. Najlažji način za uporabo pogojnega stavka VBA if je, ko je pogoj preverjen in če je resničen, se izvede en izraz:

    Če pogoj potem izraz

    Možnost 2. Lahko pride do situacije, ko je treba po preverjanju pogoja izvesti več izrazov, v tem primeru pa ima stavek if obliko:

    Če pogoj torej

    Izraz 1

    Izraz 2

    Izraz N

    Kot lahko vidite, je v tem primeru uporabljen zaključek if ... end if block, pomemben je tudi v primeru, ko so stavki ugnezdeni.

    Možnost 3: Da se izognete ustvarjanju ugnezdenih pogojne izjave, se uporablja naslednja konstrukcija:

    Če pogoj torej

    Izraz 1

    Izraz 2

    Tukaj je vse izjemno preprosto, če je pogoj resničen, se izvede prvi izraz, če ne, drugi. Ne smemo pozabiti, da lahko po preverjanju stanja sledi več operaterjev, kot v zgornji različici.

    Možnost 4: Preverjanje več pogojev:

    Če je pogoj 1, potem

    Izrazi 1

    ElseIf pogoj 2 torej

    Izrazi 2

    ElseIf pogoj 3 torej

    Izrazi 3

    Logika dela je naslednja: najprej se preveri prvi pogoj, če je resničen, nato se izvedejo prvi izrazi, nato pa sledi prehod na operator, ki sledi End If. Če prvi pogoj ni izpolnjen, se preveri drugi pogoj in tako naprej, uporaba stavka Else na koncu ni obvezna, lahko mu sledi stavek, ki naj se izvede, če ni bil izpolnjen noben od predhodnih pogojev.

    V redu, zdaj pa napišimo preprost primer uporabe VBA konstrukcije if then. Ustvarite obrazec v urejevalniku Visual Basic for Applications in na njegovo površino dodajte tri besedilne oznake () in en gumb (). V urejevalnik kode napišite:

    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 = "Vsota je dosegla 10" ElseIf MySumm = 100 Then Label2.Caption = "Vsota je dosegla 100" ElseIf MySumm = 1000 Then Label3.Caption = "Znesek je dosegel 1000" Else Label4.Caption = "Vrednost dosežena"& MySumm End If Loop End Sub Private Sub CommandButton1_Click() Call GetSub End Sub Private Sub UserForm_Initialize() Label1.Caption = "" Label1.FontSize = 13 Label1.ForeColor = vbRed Label2.Caption = "" Label2.FontSize = 13 Label2. ForeColor = vbGreen Label3.Caption = "" Label3.FontSize = 13 Label3.ForeColor = vbBlue Label4.Caption = "" Label4.FontSize = 13 CommandButton1.Caption = "Execute" End Sub

    V GetSub proceduri se uporablja cikel, pogoj za izvedbo cikla je, da mora biti vrednost spremenljivke MySumm manjša ali točno 10000. Samo telo cikla uporablja VBA if then stavke z več možnostmi. Pogoji se preverjajo: če je vsota dosegla vrednost 10, potem vpišite eno informacijo v prvo besedilno polje, če je 100 - drugo informacijo, če je 1000 - tretjo informacijo, drugače - vpišite podatke v lastnost Caption četrtega besedilno polje.