Az If-Then használata az Excel 2016 VBA-ban

Az If-Then a VBA legfontosabb vezérlőstruktúrája. Valószínűleg napi rendszerességgel fogja használni ezt a parancsot. Használja az If-Then struktúrát, ha egy vagy több utasítást feltételesen szeretne végrehajtani. Az opcionális Else záradék, ha szerepel, lehetővé teszi egy vagy több utasítás végrehajtását, ha a tesztelt feltétel nem igaz. Íme egy egyszerű CheckUser eljárás, amelyet az If-Then-Else struktúra használatára átkódoltak:

Al CheckUser2()
  UserName = InputBox ("Írja be a nevét: ")
  Ha UserName = „Satya Nadella” Akkor
    MsgBox („Üdvözöljük Satya…”)
' …[További kód itt] …
  Más
    MsgBox „Elnézést. Ezt csak Satya Nadella tudja végrehajtani.”
  Vége Ha
Vége Sub

Ha-Akkor példák

A következő rutin az If-Then struktúrát mutatja be az opcionális Else záradék nélkül:

Sub GreetMe()
  Ha az idő < 0,5, akkor az MsgBox „Jó reggelt”
Vége Sub

A GreetMe eljárás a VBA Time függvényét használja a rendszeridő lekérdezéséhez. Ha az aktuális idő kevesebb, mint 0,5, a rutin barátságos üdvözlést jelenít meg. Ha az Idő nagyobb vagy egyenlő, mint 0,5, a rutin véget ér, és semmi sem történik.

Másik üdvözlés megjelenítéséhez, ha az Idő nagyobb vagy egyenlő, mint 0,5, hozzáadhat egy másik If-Then utasítást az első után:

Sub GreetMe2()
  Ha az idő < 0,5, akkor az MsgBox „Jó reggelt”
  Ha az idő >= 0,5, akkor az MsgBox „Jó napot”
Vége Sub

Figyeljük meg, hogy a >= (nagyobb vagy egyenlő), mint a második If-Then utasítás. Ez biztosítja, hogy az egész nap lefedett legyen. Ha > (nagyobb, mint) lett volna használva, akkor nem jelenne meg üzenet, ha ezt az eljárást pontosan déli 12:00-kor hajtják végre. Ez elég valószínűtlen, de egy ilyen fontos programmal nem akarsz kockáztatni.

Egy ha-akkor-más példa

Az előző probléma másik megközelítése az Else záradékot használja. Ugyanaz a rutin átkódolva az If-Then-Else struktúra használatára:

Sub GreetMe3()
  Ha az idő < 0,5, akkor az MsgBox „Jó reggelt” Else _
    MsgBox „Jó napot”
Vége Sub

Figyeljük meg, hogy az előző példában a sorfolytató karaktert (aláhúzásjelet) használjuk. Az If-Then-Else utasítás valójában egyetlen állítás. A VBA egy kissé eltérő módot biztosít az End If utasítást használó If-Then-Else konstrukciók kódolására. Ezért a GreetMe eljárás átírható a következőre

Sub GreetMe4()
  Ha az idő < 0,5 Akkor
    MsgBox „Jó reggelt”
  Más
    MsgBox „Jó napot”
  Vége Ha
Vége Sub

Valójában tetszőleges számú utasítást beszúrhat az If rész alá, és bármennyi utasítást az Else rész alá. Ez a szintaxis könnyebben olvasható, és rövidebbé teszi az utasításokat.

Mi a teendő, ha ki kell bővítenie a GreetMe rutint három feltétel kezelésére: reggel, délután és este? Két lehetősége van: Használjon három If-Then utasítást, vagy használjon beágyazott If-Then-Else struktúrát. A beágyazás azt jelenti, hogy egy If-Then-Else struktúrát helyezünk el egy másik If-Then-Else struktúrába. Az első megközelítés, amely három If-Then utasítást használ, egyszerűbb:

Sub GreetMe5()
 Dim Msg As String
 Ha az idő < 0,5, akkor Üzenet = „Reggel”
 Ha az idő >= 0,5 és az idő < 0,75, akkor üzenet = „délután”
 Ha Idő >= 0,75, akkor Üzenet = „Este”
 MsgBox „Jó” és Msg
Vége Sub

Egy új csavar került hozzáadásra egy változó használatával. Az Msg változó a napszaktól függően eltérő szöveges értéket kap. Az MsgBox utasítás az üdvözlést jeleníti meg: Jó reggelt, Jó napot vagy Jó estét.

A következő rutin ugyanazt a műveletet hajtja végre, de egy If-Then-End If struktúrát használ:

Sub GreetMe6()
  Dim Msg As String
  Ha az idő < 0,5 Akkor
    Msg = "Reggel"
  Vége Ha
  Ha az idő >= 0,5 és az idő < 0,75, akkor
    Msg = „Délután”
  Vége Ha
  Ha Idő >= 0,75 Akkor
    Msg = "Este"
  Vége Ha
  MsgBox „Jó” & Üzenet
Vége Sub

Az ElseIf használata

Az előző példákban a rutin minden utasítása végrehajtódik. Egy kicsit hatékonyabb struktúra kilép a rutinból, amint egy feltétel igaznak bizonyul. Például reggel az eljárásnak meg kell jelenítenie a Good Morning üzenetet, majd ki kell lépnie – a többi felesleges körülmény értékelése nélkül.

Egy ilyen apró rutinnal nem kell aggódnia a végrehajtási sebesség miatt. Nagyobb alkalmazások esetén azonban, ahol a sebesség kritikus, ismernie kell az If-Then szerkezet egy másik szintaxisát.

A következőképpen írhatja át a GreetMe rutint a szintaxis használatával:

Sub GreetMe7()
 Dim Msg As String
 Ha az idő < 0,5 Akkor
   Msg = "Reggel"
 ElseIf Idő >= 0,5 és idő < 0,75 Akkor
   Msg = „Délután”
 Más
   Msg = "Este"
 Vége Ha
 MsgBox „Jó” és Msg
Vége Sub

Ha egy feltétel igaz, a VBA végrehajtja a feltételes utasításokat, és az If struktúra véget ér. Más szóval, ez az eljárás egy kicsit hatékonyabb, mint az előző példák. A kompromisszum az, hogy a kódot nehezebb megérteni.

Egy másik ha-akkor példa

Íme egy másik példa, amely az If-Then szerkezet egyszerű formáját használja. Ez az eljárás mennyiséget kér a felhasználótól, majd megjeleníti a megfelelő kedvezményt a felhasználó által megadott mennyiség alapján:

Sub ShowDiscount()
  Dim Mennyiség Amíg
  Dim kedvezmény Duplaként
  Mennyiség = InputBox ("Adja meg a mennyiséget:")
  Ha Mennyiség > 0 Akkor Kedvezmény = 0,1
  Ha Mennyiség >= 25 Akkor Kedvezmény = 0,15
  Ha Mennyiség >= 50, akkor Kedvezmény = 0,2
  Ha Mennyiség >= 75 Akkor Kedvezmény = 0,25
  MsgBox “Kedvezmény: “ & Kedvezmény
Vége Sub

Figyelje meg, hogy ebben a rutinban minden If-Then utasítás végrehajtásra kerül, és a Discount értéke az utasítások végrehajtásával változhat. A rutin azonban végül a megfelelő Discount értéket jeleníti meg, mivel az If-Then utasítások növekvő Kedvezményértékek sorrendjében vannak.

A következő eljárás ugyanazokat a feladatokat hajtja végre az alternatív ElseIf szintaxis használatával. Ebben az esetben a rutin azonnal véget ér egy igaz feltételre vonatkozó utasítások végrehajtása után:

Sub ShowDiscount2()
 Dim Mennyiség Amíg
 Dim kedvezmény Duplaként
 Mennyiség = InputBox ("Adja meg a mennyiséget: ")
 Ha Mennyiség > 0 és Mennyiség < 25 Akkor
  Kedvezmény = 0,1
 ElseIf Mennyiség >= 25 És Mennyiség < 50 Akkor
  Kedvezmény = 0,15
 ElseIf Mennyiség >= 50 És mennyiség < 75 Akkor
  Kedvezmény = 0,2
 ElseIf Mennyiség >= 75 Akkor
  Kedvezmény = 0,25
 Vége Ha
 MsgBox “Kedvezmény: “ & Kedvezmény
Vége Sub

Ezek a többszörös If-Then struktúrák meglehetősen nehézkesek. Érdemes lehet az If-Then struktúrát csak egyszerű bináris döntésekhez használni.

Leave a Comment

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban. Részletes útmutató, hogyan készíthet különféle stílusú jegyzeteket bibliográfiai információkhoz vagy magyarázó megjegyzésekhez.

Hogyan lehet kiemelni a statisztikailag kiugró értékeket az Excelben

Hogyan lehet kiemelni a statisztikailag kiugró értékeket az Excelben

Tudjon meg mindent arról, hogyan lehet az Excelben kiemelni a statisztikailag kiugró értékeket, mégpedig egyszerű eszközökkel és módszerekkel. Kiemelt figyelmet fordítunk a kiugró értékek azonosítására és kezelésére.

Hogyan lehet mintát venni az adatokból Excelben

Hogyan lehet mintát venni az adatokból Excelben

Az Excel Mintavételi eszközével véletlenszerűen kiválaszthat elemeket egy adatkészletből vagy választhat minden n-edik elemet. Ismerje meg, hogyan használhatja ezt a hasznos funkciót az adatelemzéshez!

10 klassz trükk a Microsoft Word 2019 programmal

10 klassz trükk a Microsoft Word 2019 programmal

Fedezze fel a Microsoft Word 2019 legjobb trükkjeit, amelyek segítenek a hatékonyabb munkavégzésben. Tudd meg, hogyan használhatod ki a program funkcióit!

Bekezdések igazítása és behúzása a Word 2019-ben

Bekezdések igazítása és behúzása a Word 2019-ben

A Word 2019-ben a bekezdések igazítása és behúzása kulcsfontosságú a dokumentumok megfelelő megjelenítéséhez. Ismerje meg a formázási lehetőségeket és tippeket a hatékonyabb munkához.

Az Excel 2019 Solver használata

Az Excel 2019 Solver használata

Fedezze fel, hogyan használhatja az Excel 2019 Solver bővítményt a komplex problémák megoldására. A célcella, változócellák és kényszerek beállítása lépésről lépésre.

Dinamikus elemek hozzáadásához használja a Word 2019 mezőit

Dinamikus elemek hozzáadásához használja a Word 2019 mezőit

A Word lehetővé teszi dinamikus elemek hozzáadását a dokumentumhoz. Fedezze fel, hogyan lehet különböző mezőket használni a Word programban a dinamikus tartalom létrehozásához.

Oszloptípusok a SharePoint 2010-ben

Oszloptípusok a SharePoint 2010-ben

A SharePoint 2010 oszlopai az adatok tárolására szolgálnak. Fedezze fel a különböző oszlop típusokat és azok alkalmazását a SharePoint rendszeren belül.

A nem kívánt szöveg eltávolítása a Word 2013-ban

A nem kívánt szöveg eltávolítása a Word 2013-ban

A Word 2013 szövegtörlésének képessége kulcsfontosságú, legyen szó szövegalkotásról vagy törlésről. Ismerje meg a hatékony szövegtörlési módszereket!

Hogyan készítsünk fotóalbumot a PowerPoint 2016-ban

Hogyan készítsünk fotóalbumot a PowerPoint 2016-ban

A fotóalbum funkció a PowerPoint 2016-ban lehetővé teszi, hogy egyszerre több fényképet illesszen be egy prezentációba, megkönnyítve ezzel a többszörös képek kezelését.