Kako podesiti pametne telefone i računare. Informativni portal

Operateri VBA podružnice: Teški izbori. Bezuslovni skok

PROGRAMIRANJE LANGUAGE VISUAL BASIC. PROGRAMSKI GRANI

Grananje u Visual Basicu je organizovano korišćenjem:

  • uslovna IF izjava;
  • ugrađena IIF funkcija;
  • Operator izbora CASE.

Da biste testirali jedan uslov i izvršili naredbu ili blok naredbi, koristite uslovni izraz IF...THEN. Ovaj operator se može koristiti sa različitim sintaksama: jednoredni (linearni) i višeredni (blok).

Linearni operator ima sljedeću sintaksu:

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

Operator bloka ima sljedeću sintaksu:

Ako<условие>Onda
<блок операторов 1>
End If

Ako je zadati uslov Tačan, izvršava se blok naredbe, u suprotnom se izvršava blok naredbe2. Ako klauzula Else nije navedena, ifKada je uslov ispunjen, kontrola se odmah prenosi na sljedećeg operatera nakon If.

Naredba If može biti ugniježđena, odnosno smještena unutar blokova izraza. Da biste testirali više od jednog uslova i izvršili jedan od nekoliko blokova naredbi, koristite prošireni uslovni izraz oblika:

Ako<условие 1>Onda
<блок операторов 1>
Inače<условие 2>Onda
<блок операторов 2>
Inače<условие n>Onda
<блок операторов n>
End If

Za odabir jedne od vrijednosti ovisno o zadovoljenju ili neuspjehu nekog uvjeta, koristite IIF uvjetnu funkciju, koja ima sljedeću sintaksu:

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

Ova funkcija vraća vrijednost1 ako je uvjet istinit i vrijednost2 ako je uvjet netačan.

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

False, ili bilo koji aritmetički izraz (nulta vrijednost je ekvivalentna False, a vrijednost različita od nule je ekvivalentna Tačno).

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

Format zapisa operatera:

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

Izraz koji se testira se vrednuje na početku naredbe Select Case. Ovaj izraz može vratiti vrijednost bilo kojeg tipa (boolean, numerički, string).

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

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

Ovi izrazi liste alimentacije mogu imati jedan od sljedećih oblika:

  • <выражение>- provjerava podudarnost datog izraza sa jednim od izraza - lista elemenata;
  • <выражение 1>To<выражение 2>- provjerava da li dati izraz spada u specificirani raspon;
  • < Is <логический оператор> < выражение>- provjerava ispunjenost navedenog uslova za dati izraz.

VBA ima operator uslovnog skoka za upotrebu u slučajevima kada treba da birate između velikog broja različitih grana koda: operator OdaberiteSlučaj(vrlo je zgodno implementirati strukturu višestrukog izbora) Radi na isti način kao i više nezavisnih iskaza Ako, ali je razumljivije i onome ko piše kod i onome ko ga čita. Ovaj operater je efikasniji od operatera AkoOndaInače.

Ključne riječi OdaberiteSlučaj koristi se sa mnogim operaterima Slučaj, gdje svaki operater Slučaj provjerava pojavu drugog stanja i samo jedna od grana se izvršava Slučaj.Branch Slučaj može sadržavati jedan, više ili nijedan VBA iskaz.

Odaberite Case– kontrolni izraz koji izvršava jedan od nekoliko blokova naredbi ovisno o vrijednosti izraza.

OdaberiteSlučaj izraz_izraza

[ Slučaj Expression_list_1

[Operator_Block_1]

[Slučaj Expression_list_2 ]

[Operator_block_2]]

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

[Slučaj Else

[Operator_Block_N]]

EndSelect

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

– Expression_list – svaka lista je lista logičkih izraza odvojenih zarezima; imaju isti tip kao izbor_izraz;

– Statement_block – sadrži bilo koji broj VBA naredbi.

Prilikom izvršavanja naredbe OdaberiteSlučaj VBA prvo procjenjuje Selection_Expression, a zatim uspoređuje rezultat tog izraza sa svakim izrazom navedenim u svakoj Expression_List . Ako je vrijednost predstavljena Selection_Expression odgovara izrazu u Expression_List za jednu od Slučaj,VBA izvršava StatementBlock za ovu naredbu Slučaj.Ako je vrijednost Selection_Expression odgovara više od jednog operatora Slučaj,VBA samo izvršava naredbe U prvom podudarnu rečenicu Slučaj.Izraz_izbora je često jednostavno ime jedne varijable, matematičke ili numeričke, a ne logički izraz. Izrazi u Expression_List - To su obično logički izrazi.

Nakon što su naredbe u prvom podudarnom izrazu završile s izvršavanjem Slučaj VBA nastavlja izvršavanje koda od prve izjave posle ključne riječi KrajOdaberite, koji označavaju kraj OdaberiteSlučaj.

Ako je vrijednost Selection_Expression ne odgovara nijednom od Slučaj i opciono SlučajInače je prisutan, VBA izvršava naredbe predstavljene Statement_Block_N prije prelaska kod operatera poslije OdaberiteSlučaj. Operatorski blok Slučaj Else izvršava se samo ako Selection_Expression ne zadovoljava nijedan od uslova Slučaj. Obično se koristi za rukovanje neželjenim vrijednostima. Akcija operatera OdaberiteSlučaj ilustrovano blok dijagramom prikazanim na sl. 5.

Slika 5. Blok dijagram dizajna OdaberiteSlučaj

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

Izraz_1, Izraz_2, …, Izraz_N

Izraz To Izraz

Is Izraz s operacijom

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

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

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

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

Možete koristiti više izraza ili ograničenja u svakom uslovu Slučaj. Na primjer, Slučaj 1 do 4, 7 do 9, 11, 13, je > n %.

Primjer 4. Program koji obračunava popust u zavisnosti od iznosa kupovine.

Sub skidka()

„Definicija popusta (u%) u zavisnosti od

„količina prodate robe

Dim skidka Kao Integer

Dim summa Kao Single

summa = InputBox(“Unesite iznos kupovine”, “Obračun popusta”, 0)

Ako suma > 0 Onda

Odaberite Case summa

Case Is > 1000

Case Is > 500

Case Else

Kraj Odaberite

MsgBox"Popust" & skidka & "%"

MsgBox"Iznos kupovine nije naveden"

Odaberite Primjer iskaza slučaja

Svakako bi pomoglo imati primjer koji bi pokazao kako bi struktura Select Case zapravo mogla izgledati.

Odaberite Case objRol l OfFi l m.Type

Futrola "Slide"

intSlide = intSlide + 1

Futrola "Boja negativ"

intColoredNegative = intColoredNegative + 1

Slučaj "BW negativan"

intBWnegativno = intBWnegativno + 1

MgaBox "Nepoznata vrsta filma."

Ovaj isječak koda u osnovi radi istu stvar kao primjer koda iznad iz odjeljka If naredbi. . .ElseIf (samo provjera isteka je izostavljena). Međutim, od tada se čini da je naš hipotetički objekt koji predstavlja rolu filma malo izmijenjen - informacije o boji i bezbojnosti filma sada su također predstavljene svojstvom Ture, a ne posebnim svojstvom Color, kao prije.

A ako je to slučaj, onda program mora raditi samo s jednom vrijednošću - vrijednošću koju vraća svojstvo Type. - ali se ova vrijednost poredi sa nekoliko važećih. Dakle, Select Case je upravo ono što je doktor naručio za naš slučaj.

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

Napominjemo da znak operacije, čije prisustvo na prvi pogled izgleda logično, nije uključen u kriterije. Razlog je taj što iskazi Select Case jednostavno pretpostavljaju jednakost kao operator poređenja.

Iz knjige SOFTVER UGRAĐENIH SISTEMA. Opšti zahtjevi za razvoj i dokumentaciju autor Gosstandart Rusije

Iz knjige Računar + mobilni telefon: Efikasna interakcija autor Goltsman Viktor Iosifovich

Slanje sa web stranice operatera Danas vjerovatno svi operateri već podržavaju slanje SMS-a sa svoje web stranice. Poruke se, međutim, mogu slati samo pretplatnicima datog operatera, ali to je, po pravilu, dovoljno, pa na praksu. Sada ćemo pogledati

Iz knjige UNIX: Procesna komunikacija autor Stevens William Richard

Primjer: Posix redovi poruka i funkcija odabira Ručica reda poruka (varijabla tipa mqd_t) nije “normalna” ručica i ne može se koristiti sa funkcijama odabira i anketiranja (poglavlje 6). Međutim, mogu se koristiti zajedno s kanalom i funkcijom mq_notify. (Slično

Iz knjige VBA for Dummies od Stevea Cummingsa

Iz knjige Firebird DATABASE DEVELOPER'S GUIDE od Borri Helen

Testiranje uslova u naredbama Select Case Struktura Select Case ne koristi eksplicitno pune uslovne izraze poput onih o kojima je bilo reči (pogledajte odeljak „Kurs korišćenja uslovnih izraza“). Svaki uslov treba da razbijete na dva dela, predstavljena kao

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

Iz knjige Jezik C - vodič za početnike od Prata Steven

Iz knjige Linux i UNIX: programiranje ljuske. Vodič za programere. od Tainsley Davida

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

Primjer 10-24. Upotreba slučaja #!/bin/bashecho; echo "Pritisnite tipku, a zatim tipku Return." pročitajte Pritisak na tipku "$Keypress" u ) echo "malo slovo";; ) echo "Veliko slovo";; ) echo "Broj";; *) echo "Znak interpunkcije, razmak ili nešto drugo";;esac # Pokazivač je dozvoljen

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

Primjer 10-25. Kreiranje menija koristeći slučaj #!/bin/bash# Grubi primjer brisanja baze podataka # Brisanje screenecho-a " Lista"echo " ------"echo "Odaberite osobu za koju ste zainteresovani:"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 u navodnicima.

Iz knjige autora

Primjer 10-26. Naredba case dozvoljava da se koristi zamjena naredbi umjesto raščlanjene varijable #!/bin/bash# Zamjena komande u "case".case $(arch) u # naredba "arch" vraća string koji opisuje arhitekturu hardvera.i386) echo "80386 bazirana mašina ";;i486) echo "Mašina zasnovana na

Iz knjige autora

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

Iz knjige autora

PROŠIRENJE OPERATORA IF KORIŠĆENJEM else Najjednostavniji oblik if operatora je onaj koji smo upravo koristili: if(expression)naredba Obično se izraz ovdje razumije kao uslovni izraz koji upoređuje vrijednosti dvije veličine (na primjer, x > y

Iz knjige autora

18.8.2. Završetak izvršenja iskaza case Razmotrite sljedeći primjer. Skripta pokreće beskonačnu petlju sve dok korisnik ne unese broj veći od 5. Da biste prekinuli petlju i vratili se na komandnu liniju tumača, koristite naredbu break.$ pg

Iz knjige autora

Iz knjige autora

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

Kontrolne strukture vam omogućavaju da kontrolišete sekvencu izvršavanja programa. Bez kontrolnih izraza, svi programski izrazi će se izvršavati s lijeva na desno i odozgo prema dolje. Međutim, ponekad želite da više puta automatski izvršite set instrukcija ili da rešite problem na drugačiji način u zavisnosti od vrednosti varijabli ili parametara koje je korisnik odredio u vreme izvođenja. U tu svrhu se koriste kontrolne konstrukcije i petlje.

VBA podržava sljedeće konstrukcije odlučivanja:

Ako. . . Onda. . . Inače

6.1 Ako izgradnja. . . Onda

Ako je konstruisati. . . Tada se koristi kada je potrebno izvršiti jednu ili grupu naredbi u zavisnosti od nekog uslova. Sintaksa ove konstrukcije vam omogućava da je navedete u jednom redu ili u nekoliko redova programa:

If uslov Onda izraz If uslov Onda izraz End If

Obično je uslov jednostavno poređenje, ali može biti bilo koji izraz sa 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 uslov tačan, tada se izvršavaju svi izrazi nakon ključne riječi Then. Da biste uslovno izvršili jednu naredbu, možete koristiti sintaksu sa jednim redom ili sintaksu sa više linija (konstrukcija bloka).

Sljedeće dvije izjave su ekvivalentne:

If anyDate< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

Imajte na umu da je sintaksa naredbe If . . . Tada se za jedan red ne koristi naredba End If. Da biste izvršili niz naredbi ako je uvjet istinit, trebali biste koristiti konstrukciju bloka If. . . Onda. . . End If.

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

Ako je uslov netačan, tada se naredbe nakon ključne riječi Then ne izvršavaju, a kontrola se prosljeđuje sljedećem redu (ili redu nakon naredbe End If u blok konstrukciji).

6.2 Ako izgradnja. . . Onda. . . Inače

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

Ako je uvjet1 Tada izraz1 ElseIf uvjet2 Tada izraz2 . . . Else izraz-n Kraj Ako

Kada se izvrši, prvo se provjerava uvjet1. Ako je netačan, VBA proverava sledeći uslov2, i tako dalje, dok ne pronađe tačan uslov. Jednom kada ga VBA pronađe, izvršava odgovarajući blok naredbi, a zatim prenosi kontrolu na naredbu nakon naredbe End if. Ova konstrukcija može uključiti blok naredbe Else koji VBA izvršava ako nijedan od uslova nije ispunjen.

Ako je konstruisati. . . Onda. . . ElseIf je zapravo samo poseban slučaj konstrukcije If. . . Onda. . . Inače. Imajte na umu da ova konstrukcija može imati bilo koji broj ElseIf blokova, ili čak nijedan. Else blok može biti uključen bez obzira na prisustvo ili, obrnuto, odsustvo ElseIf blokova.

Podprimjer1() Dim a Kao pojedinačni, b Kao pojedinačni, x Kao pojedinačni Dim z Kao dvostruki poziv read("A1", a) Poziv read("B1", b) Neka je x = CSng(InputBox("enter x", "Unos podataka", 0)) Ako je x<= a Then z = Sin(x) ElseIf x >= b Tada je z = Tan(x) Drugo: z = Cos(x) Kraj ako Call out("C1", z) Kraj Sub

Imajte na umu da klauzuli If možete dodati bilo koji broj Elself blokova. . . Onda. Međutim, broj Elself blokova može postati toliko velik da konstrukt If. . . Tada će to postati vrlo glomazno i ​​neugodno. U takvoj situaciji treba koristiti drugu strukturu odlučivanja – Select Case.

6.3 Odaberite Dizajn kućišta

Konstrukcija Select Case je alternativa If konstrukciji. . . Onda. . . Inače kada se izvršava blok koji se sastoji od velikog skupa naredbi. Konstrukcija Select Case pruža mogućnost sličnu onoj u If konstrukciji. . . Onda. . . Inače, ali za razliku od njega, čini kod čitljivijim kada postoji više izbora.

Konstrukcija Select Case radi na jednom izrazu koji se testira, a koji se evaluira jednom prilikom ulaska u konstrukciju. VBA zatim uspoređuje rezultirajući rezultat sa vrijednostima navedenim u iskazima Case konstrukcije. Ako se pronađe podudaranje, izvršava se blok naredbi povezanih s naredbom Case:

Odaberite Case tested_expression ] ] . . . ] Kraj Odaberite

Svaka lista izraza je lista jedne ili više vrijednosti. Ako postoji više od jedne vrijednosti na jednoj listi, one se odvajaju zarezima. Svaki blok naredbi sadrži nekoliko ili nijedan iskaz. Ako se pokaže da izračunata vrijednost izraza koji se testira odgovara vrijednostima iz nekoliko naredbi Case, tada se izvršava blok iskaza pridruženih prvom naredbi Case iz svih pronađenih podudaranja. VBA izvršava blok naredbi povezanih s naredbom Case Else (imajte na umu da je opciono) ako se ne pronađe podudaranje između vrijednosti izraza koji se testira i vrijednosti sa svih lista naredbi Case.

Pogledajmo primjer izračunavanja funkcije

Podprimjer2() Const pi2 = 1,57 Dim x Kao pojedinačni Dim z As Double Neka x = CSng(InputBox("enter x", "Data input", 0)) Odaberite Case x Case -pi2 z = Sin(x) Case 0 z = Cos(x) Slučaj pi2 z = Tan(x) Drugi slučaj MsgBox "Nevažeći ulazni podaci!" Exit Sub End Select Call out("D1", z) End Sub

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

Operator Select Case jezika VBA dizajniran je da formira izbor operacije u zavisnosti od vrednosti; u stvari, ovaj operator selekcije je hibrid uslovnog operatora vba if then. Sve je prilično jednostavno - u skripti postoji varijabla čija će se vrijednost mijenjati, a ovisno o vrijednosti potrebno je odabrati koji blok koda (izraza) izvršiti.

Kao iu uvjetnom operatoru, ovdje se provjerava vrijednost, na primjer: postoji tekstualno polje u koje trebate unijeti podatke, na primjer, starost. 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ć pomenuto, u te svrhe se može koristiti uslovni operator, međutim, VBA Select Case operator je kompaktnija opcija.

Sintaksa VBA Select Case izraza je:

Odaberite značenje padeža
Odaberite uslov 1
Operater set

Odaberite uslov 2
Operater set

Odaberite uslov 3
Operater set

….

Odaberite uslov N
Skup operatora N

Case Else
Ostali operateri


Kraj Odaberite

Prvo se provjerava parametar "vrijednost", koji može biti niz ili numerički tip; nakon provjere parametra dolazi do naizmjeničnog poređenja (počevši od početka) sa svakim uvjetom koji je specificiran u operatorima Odaberite Case VBA. Ako dođe do podudaranja za “uslov 1”, tada će se izvršiti “skup naredbi 1”, nakon čega slijedi kod Kraj Odaberite. Operator Case Else formalno znači "U suprotnom", to jest, ako nijedan od uslova nije tačan, tada će se izvršiti skup operatora specificiranih za Case Else. Sam VBA izraz jeste Case Else je opciono, kao i "drugi operatori", može se izostaviti ako je potrebno, 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 = "Druga vrijednost, odaberite Case VBA izjavu" Kraj Odaberite Kraj 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 linija Label1.WordWrap = Tačno " natpis na dugmetu CommandButton1.Caption = "Prikaži" "početni sadržaj tekstualnog polja TextBox1.Text = "Unesite bilo koju vrijednost" End Sub

U ovom primjeru imamo proceduru CommandButton1_Klik, koji je odgovoran za obradu klikova na dugme. Varijabla a će pohraniti vrijednost tekstualnog polja TextBox1 (svojstvo teksta). Zatim dolazi naredba Select case VBA za odabir jezika, u kojoj se provjerava vrijednost varijable a, nakon čega se vrijednost poredi sa uslovima:

  • Case Is< 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– opseg testiranja od 151 do 200
  • Case Else– zapravo, sva druga značenja.

Ovisno o rezultatu provjere, informativna poruka će biti snimljena u svojstvu Caption objekta.

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

Rezultat pokretanja makronaredbe možete vidjeti na slici. Da biste stvorili vezu između makroa i obrasca, potrebno je da upišete u blok koda za modul:

Sub OBModule() OBForm.Show End Sub

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

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

Najbolji članci na ovu temu