5. Lecke – If elágazás, logikai vizsgálatok

If elágazás, logikai vizsgálat

I. If elágazás

Szerintem sima Excel képletként megvan mindenkinek a HA függvény, mire és hogyan lehet használni. Ha nincs, az se baj, mert anélkül is tök érthető lesz a mai anyag. 🙂

Ahogy írjuk a programunkat, előfordulhat, hogy egy útelágazáshoz érünk. Egy feltételtől függ, hogy hogyan fusson tovább a programunk.

Gondoljunk egy egyszerű esetre:

ha egy személyes adatokat tartalmazó táblázatban a „neme” oszlopban „férfi” az adott illető, akkor a megszólítás „Tisztelt Uram!” legyen, ha pedig „nő”, akkor „Tisztelt Hölgyem!”. A táblánk így néz ki:

5. Lecke táblázat

VBA-ban a „HA – AKKOR – KÜLÖNBEN” kerete a következőképpen néz ki:

If … Then – Az If és a Then közé egy sorba jön a feltétel, amit megvizsgálunk. Ha férfi az illető, akkor történjen valami.

Else – A Then után és az Else elé jön, hogy mi is történjen. Írjuk ki, hogy „Tisztelt Uram!”

End If – Az Else után jön, hogy mi történjen, ha nem teljesül a feltételünk, ha nem férfi az illető. Ekkor kiírjuk, hogy „Tisztelt Hölgyem!”. A végén pedig egy End If kifejezéssel zárjuk le az elágazásunkat.

A programunk pedig így néz ki ténylegesen. Először csak a C2 cellára vizsgálva.

Sub Makró1()
   'Ha a C2 cellában "Férfi" van írva, akkor...
   If Range("C2").Value = "Férfi" Then
      MsgBox "Tisztelt Uram!"
   'Ha a C2 cellában nem "Férfi" van írva, akkor...
   Else
      MsgBox "Tisztelt Hölgyem!"
   End If
End Sub

A fenti példát továbbgondolva: nem csak „Férfi” és „Nő” érték van, hanem esetleg üres az adott mező, akkor pedig legyen „Tisztelt Cím!”. Ezt egy ElseIf – Then (Különben ha – akkor) páros beszúrásával oldjuk meg, ami annyit tesz, ha nem teljesül az első feltétel, akkor megvizsgálunk egy második feltételt is. Ebből bármennyit beletehetünk az adott elágazásba.

If Range("C2").Value = "Férfi" Then
   MsgBox "Tisztelt Uram!"
ElseIf Range("C2").Value = "Nő" Then
   MsgBox "Tisztelt Hölgyem!"
Else
   MsgBox "Tisztelt Cím!"
End If

Ha mindent értünk, akkor lépjünk is tovább.

II. Logikai vizsgálatok

Az If elágazásban természetesen nem csak azt adhatjuk meg feltételnek, hogy valaminek egyenlőnek kell lennie valamivel. Nézhetjük a fordítottját is, hogy ne legyen egyenlő, vagy például, hogy x több vagy kevesebb legyen mint y.

A következő operátorokkal dolgozhatunk, amikor a logikai feltételt adjuk meg az If és a Then között. (Vagy az Else If és a Then között.)

= – Valaminek egyenlő az értéke valamivel…
< – Kisebb mint…
> – Nagyobb mint…
<= – Kisebb vagy egyenlő
>= – Nagyobb vagy egyenlő
< > – Nem egyenlő

Például azt szeretnénk, hogy ha az irányítószám kisebb vagy egyenlő mint 4000, akkor írjuk ki az ember nemét:

If Range("B2").Value <= 4000 Then
   MsgBox Range("C2").Value
Else
   MsgBox "Nem kisebb"
End If

A logikai feltételeket persze lehet halmozni is a következők segítségével:

Not – Az értéke nem…
AND – ÉS kapcsolat, azaz több feltétel is teljesüljön egyszerre
OR – VAGY kapcsolat, azaz egyik vagy a másik feltétel teljesüljön
XOR – Kizáró VAGY,

Például, ha férfi és ügyfél, akkor írjuk ki, hogy „férfi ügyfél”:

If Range("C2").Value = "Férfi" And Range("D2").Value = "Igen" Then
   MsgBox "Férfi ügyfél"
Else
   MsgBox "Nem férfi, vagy nem ügyfél"
End If

Gyakorlati feladat

Induljunk ki az előző táblázatunkból. Feladat:
1. Készítsünk egy gombot, amely megnyomására a következő fog történni:
2. Ha egy különálló cellába – pl. A gomb előttibe – beírjuk a táblázat egyik sorának számát, akkor egy MsgBox kiírja nekünk az adott sor adatait.
3. Ráadásul, ha ügyfél az illető és az irányító száma kisebb mint 5000, akkor az E oszlop megfelelő sorába kiírjuk, hogy „Ingyenes kiszállítás”

1. Segítség, valahogy így nézzen ki:

5. Lecke gyakorlat

2. Itt találod a teljes kódot, megjegyzésekkel ellátva:

Sub Makró1()
   'Definiáljuk a sor változót
   Dim sor As Integer

   'Megadjuk a sor változó értékét, ami a G2 cella értéke
   'Beleteszünk egy IF elágazást is a biztonság kedvéért, ha üres a cella, akkor figyelmeztessen.
   If Range("G2").Value = "" Then
      MsgBox "Nem adtad meg a sort!"
   Else
    'Ha a G2 cella nem maradt üresen, akkor a beleírt érték lesz a változónk értéke
      sor = Range("G2")
   End If

   'Az első sor oszlop címkéket tartalmaz, így azt szűrjük ki.
   If sor <= 1 Then
      MsgBox "1-nél nagyobb számot írj be!"
   Else
   'Ide fog jönni az, amit ténylegesen el akarunk végeztetni:
   '1. E oszlopba vigyük fel, ha ingyenes kiszállításra jogosult
      If Cells(sor, 4).Value = "Igen" And Cells(sor, 2).Value < 5000 Then
         Cells(sor, 5).Value = "Ingyenes kiszállítás"
      End If
 
   '2 Kiírjuk az aktuális sor adatait
      MsgBox Cells(sor, 1).Value & " " & Cells(sor, 2).Value & " " & Cells(sor, 3).Value & " " & Cells(sor, 4).Value & " " & Cells(sor, 5).Value
   End If
End Sub

Összefoglalás

– Megismertük az If elágazást
– Megismertük a hozzátartozó logikai operátorokat
– Tudunk feltételeket szabni VBA-ban

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 7 Átlag értékelés: 4.4]