Kako postaviti pametne telefone i računala. Informativni portal

VBA Branch Operators: Teški izbori. Bezuvjetni skok

PROGRAMSKI JEZIK VISUAL BASIC. PROGRAMIRANJE GRANA

Grananje u Visual Basicu organizirano je pomoću:

  • uvjetna izjava IF;
  • ugrađena IIF funkcija;
  • CASE operator odabira.

Da biste testirali jedan uvjet i izvršili naredbu ili blok naredbi, koristite uvjetna izjava IF...THEN. Ovaj se operator može koristiti s različitim sintaksama: jednolinijska (linearna) i višelinijska (blokovna).

Linearni operator ima sljedeću sintaksu:

Ako<условие>Zatim<операторы!>

Blok operator ima sljedeću sintaksu:

Ako<условие>Zatim
<блок операторов 1>
Završi ako

Ako je zadani uvjet True, izvršava se blok naredbi, u suprotnom se izvršava blok naredbi2. Ako klauzula Else nije navedena, ifKada je uvjet zadovoljen, kontrola se odmah prenosi sljedećem operatoru nakon If.

Naredba If može biti ugniježđena, to jest nalaziti se unutar blokova naredbi. Da biste testirali više od jednog uvjeta i izvršili jedan od nekoliko blokova naredbi, upotrijebite proširenu uvjetnu naredbu oblika:

Ako<условие 1>Zatim
<блок операторов 1>
Drugo<условие 2>Zatim
<блок операторов 2>
Drugo<условие n>Zatim
<блок операторов n>
Završi ako

Da biste odabrali jednu od vrijednosti ovisno o zadovoljavanju ili neuspjehu nekog uvjeta, upotrijebite uvjetnu funkciju IIF koja ima sljedeću sintaksu:

IIF(<условие>, <значение1>, <значение2>)

Ova funkcija vraća vrijednost1 ako je uvjet istinit i vrijednost2 ako je uvjet lažan.

Možete koristiti Boolean izraz kao uvjet koji vraća True ili

False ili bilo koji aritmetički izraz (vrijednost nula je ekvivalentna False, a vrijednost koja nije nula je ekvivalentna True).

SELECT CASE naredba koristi se za testiranje jednog uvjeta i izvršavanje jednog od nekoliko blokova naredbi.

Format zapisa operatera:

Odaberite slučaj<проверяемое выражение>
Slučaj<список выражений 1>
<операторы 1>Slučaj<список выражений 2>
<операторы 2>Slučaj<список выражений 3>
<операторы 3>
Drugi slučaj
<операторы группы Else>
Kraj Odaberite

Izraz koji se testira procjenjuje se na početku naredbe Select Case. Ovaj izraz može vratiti vrijednost bilo koje vrste (booleova, numerička, niz).

Popis izraza je jedan ili više izraza odvojenih standardnim znakom za razdvajanje (točka-zarez).

Kada se operator izvrši, provjerava se odgovara li barem jedan od elemenata ove liste izrazu koji se testira.

Ovaj popis izraza alimentacija može imati jedan od sljedećih oblika:

  • <выражение>- provjerava podudarnost zadanog izraza s jednim od izraza - elemenata liste;
  • <выражение 1>Da<выражение 2>- provjerava da li dati izraz spada unutar navedenog raspona;
  • < Is <логический оператор> < выражение>- provjerava ispunjenje navedenog uvjeta za zadani izraz.

VBA ima operator uvjetnog skoka za upotrebu u slučajevima kada morate birati između velikog broja različitih grana koda: operator IzaberiSlučaj(vrlo je zgodno implementirati strukturu višestrukog izbora). Funkcionira na isti način kao i višestruki nezavisni iskazi Ako, ali je razumljivije onome tko piše kod i onome tko ovaj kod čita. Ovaj operater je učinkovitiji od operatera AkoZatimDrugo.

Ključne riječi IzaberiSlučaj koristi se s mnogim operaterima Slučaj,gdje svaki operator Slučaj provjerava pojavu drugog uvjeta i izvršava se samo jedna od grana Slučaj.Podružnica Slučaj može sadržavati jednu, više ili nijednu VBA naredbu.

Odaberite slučaj– upravljačka naredba koja izvršava jedan od nekoliko blokova naredbi ovisno o vrijednosti izraza.

IzaberiSlučaj odabir_izraza

[ Slučaj Popis_izraza_1

[Operator_Block_1]

[Slučaj Popis_izraza_2 ]

[Operator_block_2]]

……………………………………………………………………………

[Slučaj Else

[Operator_Block_N]]

EndSizabrati

– Selection_expression – bilo koji numerički ili simbolički izraz;

– Expression_list – svaki popis je popis logičkih izraza odvojenih zarezima; imaju isti tip kao izbor_izraza;

– Statement_block – sadrži proizvoljan broj VBA izjava.

Prilikom izvršavanja naredbe IzaberiSlučaj VBA prvo procjenjuje Selection_Expression, a zatim uspoređuje rezultat tog izraza sa svakim izrazom navedenim u svakoj Expression_List . Ako vrijednost koju predstavlja Selection_Expression odgovara izrazu u Expression_List za jednu od Slučaj,VBA izvršava StatementBlock za ovu izjavu Slučaj.Ako je vrijednost Selection_Expression odgovara više od jednog operatora Slučaj,VBA samo izvršava izjave U prvoj odgovarajuća rečenica Slučaj.Često je izbor_izraz jednostavno naziv jedne varijable, matematičke ili numeričke, a ne logički izraz. Izrazi u Expression_List - To su obično logični izrazi.

Nakon što naredbe u prvoj odgovarajućoj naredbi završe s izvršenjem Slučaj VBA nastavlja s izvršavanjem koda od prve izjave nakon ključne riječi KrajIzaberi, koji označavaju kraj IzaberiSlučaj.

Ako je vrijednost Selection_Expression ne odgovara nijednom od Slučaj, i izborno SlučajDrugo je prisutan, VBA izvršava naredbe predstavljene s Statement_Block_N prije prelaska na operatera nakon IzaberiSlučaj. Blok operatera Slučaj Else izvršava se samo ako Selection_Expression ne zadovoljava niti jedan od uvjeta Slučaj. Obično se koristi za rukovanje neželjenim vrijednostima. Radnja operatera IzaberiSlučaj ilustrirano blok dijagramom prikazanim na sl. 5.

Slika 5. Blok dijagram dizajna IzaberiSlučaj

Elementi popisa izraza moraju imati jedan od sljedeća tri oblika:

Izraz_1, Izraz_2, …, Izraz_N

Izraz To Izraz

jas Izraz s operacijom

– Izraz_ – bilo koji numerički, simbolički ili logički izraz istog tipa kao izraz za odabir;

– Izraz s operacijom – izraz koji sadrži bilo koju od sljedećih operacija:<, <=, >, >=, < >, =.

Ako se koristi ključna riječ Da da bi se odredile granice izraza, manja vrijednost mora biti prva. Na primjer, blok izjave Slučaj -1 do -5 ne izvršavaju se ako je Selection_Expression -4. Ovaj red bi trebao biti napisan kao Slučaj -5 do -1.

Operacije usporedbe mogu se koristiti samo s ključnom riječi Je, s izuzetkom operacije jednakosti. Ako nema ključa Je inteligentni urednik će ga umetnuti na pravo mjesto.

U svakom uvjetu možete koristiti više izraza ili ograničenja Slučaj. Na primjer, Slučaj 1 DO 4, 7 DO 9, 11, 13, Je > n %.

Primjer 4. Program koji obračunava popust ovisno o iznosu kupnje.

Pod skidka()

"Definicija popusta (u%) ovisno o

"količina prodane robe

Dim skidka Kao cijeli broj

Dim summa Kao samac

zbroj = InputBox(“Unesite iznos kupovine”, “Izračun popusta”, 0)

Ako zbroj > 0 Zatim

Odaberite slučaj summa

Slučaj Je > 1000

Slučaj Je > 500

Drugi slučaj

Kraj Odaberite

MsgBox"Popust" & skidka & "%"

MsgBox"Iznos kupnje nije naveden"

Odaberite Primjer izjave o slučaju

Svakako bi pomoglo imati primjer koji bi pokazao kako struktura Select Case zapravo može izgledati.

Odaberite Case objRol l OfFi l m.Type

Kutija "Slide"

intSlide = intSlide + 1

Kutija "Negativ u boji"

intColoredNegative = intColoredNegative + 1

Slučaj "BW negativ"

intBWnegative = intBWnegative + 1

MgaBox "Nepoznata vrsta filma."

Ovaj isječak koda u osnovi radi isto što i gornji primjer koda iz odjeljka If izjava. . .ElseIf (izostavljena je samo provjera isteka). Međutim, od tada se čini da je naš hipotetski objekt koji predstavlja rolu filma malo modificiran - informacije o boji i bezbojnosti filma sada su također predstavljene svojstvom Ture, a ne zasebnim svojstvom Boje, kao prije.

A ako je to slučaj, tada program mora raditi samo s jednom vrijednošću - vrijednošću koju vraća svojstvo Type. - ali ova vrijednost se uspoređuje s nekoliko važećih. Dakle, Select Case je upravo ono što je liječnik naredio za naš slučaj.

Prva upotreba operatora Case u ovom primjeru ekvivalentna je upotrebi If objRollOf Film.Type = "Slide" Then, i.e. ako je svojstvo Type objekta "Slide", tada program izvršava sljedeću naredbu, inače prelazi na drugu naredbu Case.

Imajte na umu da znak operacije, čija se prisutnost na prvi pogled čini logičnom, nije uključen u kriterije. Razlog je taj što naredbe Select Case jednostavno pretpostavljaju jednakost kao operator usporedbe.

Iz knjige SOFTVER UGRAĐENIH SUSTAVA. Opći zahtjevi za izradu i dokumentaciju Autor Gosstandart Rusije

Iz knjige Computer + Mobile Phone: Effective Interaction Autor Goltsman Viktor Iosifovich

Slanje s web stranice operatera Danas vjerojatno svi operateri već podržavaju slanje SMS-a sa svoje web stranice. Poruke se, doduše, mogu slati samo pretplatnicima određenog operatera, ali to je u pravilu dovoljno, dakle, na praksu. Sada ćemo pogledati

Iz knjige UNIX: Procesna komunikacija Autor Stevens William Richard

Primjer: Posix redovi poruka i funkcija odabira Ručka reda poruka (varijabla tipa mqd_t) nije "normalna" ručka i ne može se koristiti s funkcijama odabira i ankete (poglavlje 6). Međutim, oni se mogu koristiti u kombinaciji s kanalom i funkcijom mq_notify. (Sličan

Iz knjige VBA for Dummies autora Stevea Cummingsa

Iz knjige Firebird DATABASE DEVELOPER'S GUIDE autora Borri Helen

Uvjeti testiranja u naredbama Select Case Struktura Select Case ne koristi eksplicitno potpune uvjetne izraze poput onih koji su gore razmotreni (pogledajte odjeljak "Tečaj korištenja uvjetnih izraza"). Svaki uvjet trebate podijeliti na dva dijela, predstavljena kao

Iz knjige The Art of Shell Scripting Language Programming autora Coopera Mendela

Iz knjige Jezik C - Vodič za početnike od Prata Stevena

Iz knjige Linux i UNIX: programiranje ljuski. Vodič za razvojne programere. autora Tainsleya Davida

Iz knjige C++ za početnike autora Lippmana Stanleya

Primjer 10-24. Upotreba slučaja #!/bin/bashecho; echo "Pritisnite tipku, a zatim tipku Return." read Keypresscase "$Keypress" u ) echo "malo slovo";; ) echo "Veliko slovo";; ) echo "Broj";; *) echo "Interpunkcijski znak, razmak ili nešto drugo";;esac # Pokazivač je dopušten

Iz knjige UNIX: Razvoj mrežnih aplikacija Autor Stevens William Richard

Primjer 10-25. Stvaranje izbornika koristeći case #!/bin/bash# Grubi primjer baze podataka clear # Brisanje zaslonaecho " Popis"echo " ------"echo "Odaberite osobu koja vas zanima:"echoecho "[E] vans, Roland"echo " [J]ones, Mildred"echo "[S]mith, Julie"echo "[Z]ane, Morris"echoread personcase "$person" in# Imajte na umu: varijabla je pod navodnicima.

Iz autorove knjige

Primjer 10-26. Naredba case dopušta korištenje zamjene naredbe umjesto raščlanjene varijable #!/bin/bash# Zamjena naredbe u "case".case $(arch) u # naredba "arch" vraća niz koji opisuje hardversku arhitekturu.i386) echo "Stroj temeljen na 80386 ";;i486) echo "Stroj temeljen na

Iz autorove knjige

Primjer A-18. Generiranje prostih brojeva pomoću modulo operatora (modulo) #!/bin/bash# primes.sh: Generiranje prostih brojeva bez korištenja nizova.# Autor: Stephane Chazelas.# Ova skripta ne koristi klasični algoritam "Eratostenovo sito", #+ umjesto toga

Iz autorove knjige

PROŠIRENJE OPERATORA IF KORIŠTENJEM else Najjednostavniji oblik if operatora je onaj koji smo upravo upotrijebili: if(izraz)naredba Obično se izraz ovdje shvaća kao uvjetni izraz koji uspoređuje vrijednosti dviju veličina (na primjer, x > g

Iz autorove knjige

18.8.2. Završetak izvođenja naredbe case Razmotrite sljedeći primjer. Skripta pokreće beskonačnu petlju sve dok korisnik ne unese broj veći od 5. Za prekid petlje i povratak na naredbeni redak tumača koristite naredbu break.$ pg

Iz autorove knjige

Iz autorove knjige

Jednostavan primjer korištenja funkcije odabira Sada ćemo preraditi kod našeg izvanpojasnog prijemnika i koristiti funkciju odabira umjesto SIGURG signala. Listing 24.3 prikazuje program primanja. Listing 24.3. Prijemni program, u kojem (pogrešno)

Upravljačke strukture omogućuju kontrolu slijeda izvršavanja programa. Bez kontrolnih naredbi, sve programske naredbe će se izvršavati slijeva na desno i odozgo prema dolje. Međutim, ponekad želite opetovano automatski izvršavati skup instrukcija ili riješiti problem na drugačiji način, ovisno o vrijednosti varijabli ili parametara koje je odredio korisnik za vrijeme izvođenja. U tu svrhu koriste se kontrolne konstrukcije i petlje.

VBA podržava sljedeće konstrukcije odluka:

Ako. . . Zatim. . . Drugo

6.1 Ako je konstrukcija. . . Zatim

Ako konstruirati. . . Zatim se koristi kada je potrebno izvršiti jednu ili grupu naredbi ovisno o nekom uvjetu. Sintaksa ove konstrukcije omogućuje vam da je navedete u jednom retku ili u nekoliko redaka programa:

If uvjet Then izraz If uvjet Then izraz End If

Obično je uvjet jednostavna usporedba, ali može biti bilo koji izraz s izračunatom vrijednošću. Ova vrijednost se tumači kao False ako je null, a svaka vrijednost koja nije null tretira se kao True. Ako je uvjet istinit, tada se izvršavaju svi izrazi nakon ključne riječi Then. Da biste uvjetno izvršili jednu naredbu, možete koristiti jednolinijsku sintaksu ili višelinijsku sintaksu (blok konstrukcija).

Sljedeće dvije izjave su ekvivalentne:

Ako bilo koji datum< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

Imajte na umu da je sintaksa naredbe If . . . Zatim za jedan red ne koristi naredbu End If. Da biste izvršili niz naredbi ako je uvjet istinit, trebali biste upotrijebiti konstrukciju bloka If. . . Zatim. . . Završi ako.

Ako bilo koji datum< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If

Ako je uvjet lažan, tada se naredbe nakon ključne riječi Then ne izvršavaju, a kontrola se prenosi na sljedeći redak (ili redak nakon naredbe End If u blok konstrukciji).

6.2 Ako je konstrukcija. . . Zatim. . . Drugo

definira nekoliko blokova naredbi, od kojih će se jedna izvršiti ovisno o uvjetu:

If uvjet1 Then izraz1 ElseIf uvjet2 Then izraz2 . . . Else izraz-n End If

Kada se izvrši, uvjet1 se prvo provjerava. Ako je false, VBA provjerava sljedeći uvjet2, i tako dalje, dok ne pronađe pravi uvjet. Kada ga VBA pronađe, izvršava odgovarajući blok naredbi i zatim prenosi kontrolu na naredbu koja slijedi nakon naredbe End if. Ova konstrukcija može uključivati ​​blok naredbe Else koji VBA izvršava ako nijedan od uvjeta nije ispunjen.

Ako konstruirati. . . Zatim. . . ElseIf je zapravo samo poseban slučaj konstrukcije If. . . Zatim. . . Drugo. Imajte na umu da ova konstrukcija može imati bilo koji broj blokova ElseIf ili čak nijedan. Blok Else može se uključiti bez obzira na prisutnost ili, obrnuto, odsutnost blokova ElseIf.

Podprimjer1() Dim a As Single, b Kao Single, x Kao Single Dim z As Double Call read("A1", a) Call read("B1", b) Neka je x = CSng(InputBox("enter x", "Unos podataka", 0)) Ako x<= a Then z = Sin(x) ElseIf x >= b Zatim z = Tan(x) Else: z = Cos(x) End If Call out("C1", z) End Sub

Imajte na umu da klauzuli If možete dodati bilo koji broj Elself blokova. . . Zatim. Međutim, broj blokova Elself može postati toliko velik da konstrukcija If. . . Tada će postati vrlo glomazan i neudoban. U takvoj situaciji treba koristiti drugu strukturu odlučivanja - Select Case.

6.3 Odaberite dizajn kućišta

Konstrukcija Select Case alternativa je konstrukciji If. . . Zatim. . . Inače kada se izvršava blok koji se sastoji od velikog skupa izjava. Konstrukcija Select Case pruža mogućnost sličnu onoj konstrukcije If. . . Zatim. . . Drugo, ali za razliku od njega, čini kôd čitljivijim kada postoji više odabira.

Konstrukcija Select Case radi na jednom izrazu koji se testira, a koji se procjenjuje jednom nakon ulaska u konstrukciju. VBA zatim uspoređuje rezultirajući rezultat s vrijednostima navedenim u naredbama Case konstrukcije. Ako se pronađe podudaranje, izvršava se blok naredbi pridružen naredbi Case:

Odaberite Case tested_expression ] ] . . . ] Kraj Odaberite

Svaki popis izraza je popis jedne ili više vrijednosti. Ako postoji više od jedne vrijednosti na jednom popisu, one se odvajaju zarezima. Svaki blok naredbi sadrži nekoliko ili niti jednu naredbu. Ako se pokaže da izračunata vrijednost izraza koji se testira odgovara vrijednostima iz nekoliko naredbi Case, tada se izvršava blok naredbi pridružen prvoj naredbi Case od svih pronađenih podudaranja. VBA izvršava blok naredbi povezanih s naredbom Case Else (imajte na umu da je izborna) ako se ne pronađu podudaranja između vrijednosti izraza koji se testira i vrijednosti sa svih popisa naredbi Case.

Pogledajmo primjer izračuna funkcije

Sub example2() Const pi2 = 1.57 Dim x As Single Dim z As Double Neka x = CSng(InputBox("enter x", "Data input", 0)) Select Case x Case -pi2 z = Sin(x) Case 0 z = Cos(x) Case pi2 z = Tan(x) Case Else MsgBox "Nevažeći ulazni podaci!" Exit Sub End Odaberite Call out("D1", z) End Sub

Imajte na umu da konstrukcija Select Case procjenjuje izraz samo jednom nakon unosa, dok konstrukcija If. . . Zatim. . . Else procjenjuje drugačiji izraz za svaki Elself iskaz. Konstrukcija If. . . Zatim. . . Else se može zamijeniti konstrukcijom Select Case samo ako naredba If i svaka naredba Elself vrednuju isti izraz.

Operator Select Case jezika VBA dizajniran je za formiranje odabira operacije ovisno o vrijednosti; zapravo, ovaj operator odabira je hibrid uvjetnog operatora vba if then. Sve je vrlo jednostavno - u skripti postoji varijabla čija će se vrijednost mijenjati, a ovisno o vrijednosti trebate odabrati koji blok koda (izraz) izvršiti.

Kao iu uvjetnom operatoru, ovdje se provjerava vrijednost, na primjer: postoji tekstualno polje u koje trebate unijeti podatke, na primjer, dob. Zatim treba provjeriti unesenu vrijednost, ako je vrijednost manja od 18 prikazati jedan tekst, ako je vrijednost između 19 i 30 prikazati drugi tekst, u suprotnom prikazati treći tekst. Kao što je već spomenuto, uvjetni operator može se koristiti u takve svrhe, međutim, VBA Select Case operator je kompaktnija opcija.

Sintaksa naredbe VBA Select Case je:

Odaberite značenje velikih i malih slova
Odaberite uvjet 1
Operator set

Odaberite uvjet 2
Operator set

Odaberite uvjet 3
Operator set

….

Odaberite uvjet N
Skup operatora N

Drugi slučaj
Ostali operateri


Kraj Odaberite

Prvo se provjerava parametar “vrijednost” koji može biti ili niz ili numerički tip; nakon provjere parametra dolazi do naizmjenične usporedbe (počevši od početka) sa svakim uvjetom koji je naveden u operatorima Odaberite slučaj VBA. Ako dođe do podudaranja za "uvjet 1", tada će se izvršiti "set naredbi 1", nakon čega će kod nakon Kraj Odaberite. Operator Case Else formalno znači "Inače", to jest, ako niti jedan od uvjeta nije istinit, tada će se izvršiti skup operatora navedenih za Case Else. Sam VBA izraz je Drugi slučaj nije obavezan, kao i “ostali operatori”, po potrebi se može izostaviti, uvijek se piše na kraju.

Pogledajmo ovaj primjer koda:

Private Sub CommandButton1_Click() Dim a a = TextBox1.Text Select Case a Case Is< 100 Label1.Caption = "Unesena vrijednost je manja od 100" Slučaj 101 do 150 Label1.Caption = "Unesena vrijednost je veća od 100 i manja od 151" Slučaj 151 do 200 Label1.Caption = "Unesena vrijednost je veća od 151 i manja od 201" Case Else Label1.Caption = "Other Value, Select Case VBA Statement" End Select End Sub Private Sub UserForm_Activate() " početne postavke "***************************** Label1.Caption = "" " veličina teksta Label1.FontSize = 15 " boja teksta Label1.ForeColor = &HFF0000 "centralno poravnanje Label1.TextAlign = fmTextAlignCenter " omogući prelamanje retka Label1.WordWrap = Istina " natpis na gumbu CommandButton1.Caption = "Prikaži" "početni sadržaj tekstualnog polja TextBox1.Text = "Unesite bilo koju vrijednost" End Sub

U ovom primjeru imamo proceduru CommandButton1_Click, koji je odgovoran za obradu klikova na gumb. Varijabla a pohranit će vrijednost tekstualnog polja TextBox1 (svojstvo Text). Slijedi naredba Select case VBA language selection u kojoj se provjerava vrijednost varijable a, nakon čega se vrijednost uspoređuje s uvjetima:

  • Slučaj Je< 100 – ako je vrijednost varijable a manja od 100
  • Slučaj 101 do 150– ako je vrijednost u rasponu od 101 do 150
  • Slučaj 151 do 200– raspon testa od 151 do 200
  • Drugi slučaj– zapravo sva druga značenja.

Ovisno o rezultatu provjere, bit će zabilježena informativna poruka u svojstvu Caption objekta.

Postupak UserForm_Activate sadrži retke koda za početnu konfiguraciju komponenti obrasca - boju, veličinu, početni tekst i tako dalje.

Na slici možete vidjeti rezultat pokretanja makronaredbe. Da biste stvorili vezu između makronaredbe i obrasca, trebate napisati u blok koda za modul:

Sub OBModule() OBForm.Show End Sub

Ovdje OBModule– naziv modula (makro), i OBForm– naziv obrasca.

Vrijedno je napomenuti da čak i ako se uvjet podudara, na primjer: manje od 100 i više od 99, u naredbi Select Case izvršit će se samo prvi uvjet podudaranja, a svi ostali će biti zanemareni.

Najbolji članci na temu