Kako koristiti If-Then u Excel 2016 VBA

If-Then je VBA-ova najvažnija kontrolna struktura. Ovu naredbu vjerojatno ćete koristiti svakodnevno. Koristite strukturu If-Then kada želite izvršiti uvjetno jedan ili više izraza. Opcijska klauzula Else, ako je uključena, omogućuje vam da izvršite jednu ili više naredbi ako uvjet koji testirate nije istinit. Evo jednostavne procedure CheckUser, prekodirane za korištenje strukture If-Then-Else:

Sub CheckUser2()
  Korisničko ime = InputBox ("Unesite svoje ime: ")
  Ako je korisničko ime = "Satya Nadella" Zatim
    MsgBox ("Dobrodošla Satya...")
' …[Više koda ovdje] …
  Drugo
    MsgBox “Oprosti. Samo Satya Nadella može ovo voditi.”
  Završi ako
Kraj Sub

Ako-Onda primjeri

Sljedeća rutina pokazuje strukturu If-Then bez neobavezne klauzule Else:

Sub GreetMe()
  Ako je vrijeme < 0,5 onda MsgBox "Dobro jutro"
Kraj Sub

Procedura GreetMe koristi VBA-ovu funkciju vremena za dobivanje vremena sustava. Ako je trenutno vrijeme manje od 0,5, rutina prikazuje prijateljski pozdrav. Ako je Vrijeme veće ili jednako .5, rutina završava i ništa se ne događa.

Za prikaz drugačijeg pozdrava ako je Vrijeme veće od ili jednako .5, možete dodati još jednu naredbu If-Then nakon prve:

Sub GreetMe2()
  Ako je vrijeme < 0,5 onda MsgBox "Dobro jutro"
  Ako je vrijeme >= 0,5 onda MsgBox "Dobar dan"
Kraj Sub

Primijetite da se >= (veće ili jednako) koristi za drugu naredbu If-Then. To osigurava da je cijeli dan pokriven. Da je korišteno > (veće od), ne bi se pojavila poruka da se ovaj postupak izvrši točno u 12:00 sati. To je malo vjerojatno, ali s ovakvim važnim programom ne želite riskirati.

Primjer If-Onda-Else

Drugi pristup prethodnom problemu koristi klauzulu Else. Evo iste rutine kodirane za korištenje strukture If-Onda-Else:

Sub GreetMe3()
  Ako je vrijeme < 0,5 onda MsgBox “Dobro jutro” Ostalo _
    MsgBox “Dobar dan”
Kraj Sub

Primijetite da se u prethodnom primjeru koristi znak za nastavak retka (podvlaka). Naredba If-Then-Else zapravo je jedna izjava. VBA pruža malo drugačiji način kodiranja If-Then-Else konstrukcija koje koriste naredbu End If. Stoga se GreetMe procedura može prepisati kao

Sub GreetMe4()
  Ako je vrijeme < 0,5 Tada
    MsgBox "Dobro jutro"
  Drugo
    MsgBox “Dobar dan”
  Završi ako
Kraj Sub

Zapravo, možete umetnuti bilo koji broj izraza u dio If i bilo koji broj izraza u dio Else. Ova sintaksa je lakša za čitanje i čini izjave kraćima.

Što ako trebate proširiti GreetMe rutinu za rješavanje tri stanja: ujutro, poslijepodne i navečer? Imate dvije mogućnosti: upotrijebite tri ako-onda naredbe ili upotrijebite ugniježđenu strukturu ako-onda-drugače. Ugniježđenje znači stavljanje If-Onda-Else strukture unutar druge If-Onda-Else strukture. Prvi pristup, koristeći tri If-Then izjave, jednostavniji je:

Sub GreetMe5()
 Priguši poruku kao niz
 Ako je vrijeme < 0,5 tada je poruka = ​​"Jutro"
 Ako je vrijeme >= 0,5 i vrijeme < 0,75 Tada je poruka = ​​"Poslijepodne"
 Ako je vrijeme >= 0,75 Tada je poruka = ​​"Večer"
 MsgBox “Dobro” & Msg
Kraj Sub

Dodan je novi zaokret uz korištenje varijable. Varijabla Msg dobiva drugačiju tekstualnu vrijednost, ovisno o dobu dana. Izjava MsgBox prikazuje pozdrav: Dobro jutro, Dobar dan ili Dobra večer.

Sljedeća rutina izvodi istu radnju, ali koristi strukturu If-Then-End If:

Sub GreetMe6()
  Priguši poruku kao niz
  Ako je vrijeme < 0,5 Tada
    Poruka = ​​"Jutro"
  Završi ako
  Ako je vrijeme >= 0,5 i vrijeme < 0,75 Tada
    Poruka = ​​"Poslijepodne"
  Završi ako
  Ako je Vrijeme >= 0,75 Tada
    Poruka = ​​"Večer"
  Završi ako
  MsgBox “Dobro” & Msg
Kraj Sub

Korištenje ElseIf

U prethodnim primjerima, svaki izraz u rutini se izvršava. Nešto učinkovitija struktura bi izašla iz rutine čim se utvrdi da je uvjet istinit. Ujutro, na primjer, procedura bi trebala prikazati poruku Dobro jutro, a zatim izaći - bez evaluacije drugih suvišnih uvjeta.

Uz ovakvu malu rutinu, ne morate brinuti o brzini izvršenja. Ali za veće aplikacije u kojima je brzina kritična, trebali biste znati za drugu sintaksu za strukturu If-Then.

Evo kako možete prepisati GreetMe rutinu korištenjem ove sintakse:

Sub GreetMe7()
 Priguši poruku kao niz
 Ako je vrijeme < 0,5 Tada
   Poruka = ​​"Jutro"
 Inače ako je vrijeme >= 0,5 i vrijeme < 0,75 Tada
   Poruka = ​​"Poslijepodne"
 Drugo
   Poruka = ​​"Večer"
 Završi ako
 MsgBox “Dobro” & Msg
Kraj Sub

Kada je uvjet istinit, VBA izvršava uvjetne izraze, a struktura If završava. Drugim riječima, ovaj postupak je malo učinkovitiji od prethodnih primjera. Kompromis je što je kod teže razumljiv.

Još jedan primjer Ako-Onda

Evo još jednog primjera koji koristi jednostavan oblik strukture If-Then. Ovaj postupak traži od korisnika količinu, a zatim prikazuje odgovarajući popust na temelju količine koju korisnik unese:

Sub ShowDiscount()
  Dim Quantity As Long
  Dim Discount As Double
  Količina = InputBox ("Unesite količinu:")
  Ako je količina > 0 tada je popust = 0,1
  Ako je količina >= 25, tada je popust = 0,15
  Ako je količina >= 50 tada je popust = 0,2
  Ako je količina >= 75 Tada je popust = 0,25
  MsgBox “Popust: “ & Popust
Kraj Sub

Primijetite da se svaka naredba If-Then u ovoj rutini izvršava, a vrijednost za Discount može se mijenjati kako se iskazi izvršavaju. Međutim, rutina u konačnici prikazuje ispravnu vrijednost za popust jer su naredbe If-Then prema rastućim vrijednostima popusta.

Sljedeći postupak izvodi iste zadatke korištenjem alternativne ElseIf sintakse. U ovom slučaju, rutina završava odmah nakon izvršenja naredbi za istinit uvjet:

Sub ShowPopust2()
 Dim Quantity As Long
 Dim Discount As Double
 Količina = InputBox ("Unesite količinu: ")
 Ako je količina > 0 i količina < 25 Tada
  Popust = 0,1
 Inače ako je količina >= 25 i količina < 50 Tada
  Popust = 0,15
 Inače ako je količina >= 50 i količina < 75 Tada
  Popust = 0,2
 ElseIf Količina >= 75 Tada
  Popust = 0,25
 Završi ako
 MsgBox “Popust: “ & Popust
Kraj Sub

Ove višestruke ako-onda strukture su prilično glomazne. Možda ćete htjeti koristiti strukturu If-Then samo za jednostavne binarne odluke.


Kako blokirati Microsoft Word da otvara datoteke u načinu rada samo za čitanje u sustavu Windows

Kako blokirati Microsoft Word da otvara datoteke u načinu rada samo za čitanje u sustavu Windows

Kako blokirati Microsoft Word da otvara datoteke u načinu rada samo za čitanje u sustavu Windows Microsoft Word otvara datoteke u načinu rada samo za čitanje, što onemogućuje njihovo uređivanje? Ne brinite, metode su navedene u nastavku

Kako popraviti pogrešan ispis Microsoft Word dokumenata

Kako popraviti pogrešan ispis Microsoft Word dokumenata

Kako popraviti pogreške u ispisu netočnih Microsoft Word dokumenata Pogreške u ispisu Word dokumenata s promijenjenim fontovima, neurednim odlomcima, nedostajućim tekstom ili izgubljenim sadržajem vrlo su česte. Međutim, nemojte

Izbrišite crteže olovkom i markerom na svojim PowerPoint slajdovima

Izbrišite crteže olovkom i markerom na svojim PowerPoint slajdovima

Ako ste upotrijebili olovku ili marker za crtanje na PowerPoint slajdovima tijekom prezentacije, možete spremiti crteže za sljedeću prezentaciju ili ih izbrisati tako da ćete sljedeći put kada ih pokažete početi s čistim PowerPoint slajdovima. Slijedite ove upute za brisanje crteža olovkom i markerom: Brisanje linija jedan na […]

Sadržaj biblioteke stilova u sustavu SharePoint 2010

Sadržaj biblioteke stilova u sustavu SharePoint 2010

Biblioteka stilova sadrži CSS datoteke, datoteke Extensible Stylesheet Language (XSL) i slike koje koriste unaprijed definirane glavne stranice, izgledi stranica i kontrole u SharePointu 2010. Da biste locirali CSS datoteke u biblioteci stilova web-mjesta za objavljivanje: Odaberite Radnje web-mjesta→Prikaz Sav sadržaj web-mjesta. Pojavljuje se sadržaj stranice. Knjižnica Style nalazi se u […]

Formatirajte brojeve u tisućama i milijunima u Excel izvješćima

Formatirajte brojeve u tisućama i milijunima u Excel izvješćima

Nemojte zatrpavati svoju publiku ogromnim brojevima. U Microsoft Excelu možete poboljšati čitljivost svojih nadzornih ploča i izvješća formatiranjem brojeva tako da se prikazuju u tisućama ili milijunima.

Kako dijeliti i pratiti SharePoint web-mjesta

Kako dijeliti i pratiti SharePoint web-mjesta

Naučite kako koristiti SharePointove alate za društveno umrežavanje koji pojedincima i grupama omogućuju komunikaciju, suradnju, dijeljenje i povezivanje.

Kako pretvoriti datume u julijanske formate u Excelu

Kako pretvoriti datume u julijanske formate u Excelu

Julijanski datumi se često koriste u proizvodnim okruženjima kao vremenska oznaka i brza referenca za broj serije. Ova vrsta datumskog kodiranja omogućuje trgovcima na malo, potrošačima i uslužnim agentima da identificiraju kada je proizvod napravljen, a time i starost proizvoda. Julijanski datumi se također koriste u programiranju, vojsci i astronomiji. Drugačiji […]

Kako stvoriti Access web aplikaciju

Kako stvoriti Access web aplikaciju

Možete izraditi web-aplikaciju u Accessu 2016. Dakle, što je uopće web-aplikacija? Pa, web znači da je online, a aplikacija je samo skraćenica za "aplikaciju". Prilagođena web-aplikacija je online aplikacija baze podataka kojoj se pristupa iz oblaka pomoću preglednika. Vi gradite i održavate web-aplikaciju u verziji za stolna računala […]

Traka za brzo pokretanje u sustavu SharePoint 2010

Traka za brzo pokretanje u sustavu SharePoint 2010

Većina stranica u sustavu SharePoint 2010 prikazuje popis navigacijskih veza na traci za brzo pokretanje na lijevoj strani stranice. Traka za brzo pokretanje prikazuje veze na istaknuti sadržaj web-mjesta kao što su popisi, knjižnice, web-mjesta i stranice za objavljivanje. Traka za brzo pokretanje uključuje dvije vrlo važne veze: vezu za sav sadržaj web-mjesta: […]

Što znače poruke o greškama Solvera u Excelu?

Što znače poruke o greškama Solvera u Excelu?

Za jednostavne probleme, Solver u Excelu obično brzo pronalazi optimalne vrijednosti varijable Solvera za funkciju cilja. No, u nekim slučajevima, Solver ima problema s pronalaženjem vrijednosti varijable Solvera koje optimiziraju funkciju cilja. U tim slučajevima, Solver obično prikazuje poruku ili poruku o pogrešci koja opisuje ili raspravlja o problemu koji […]