VBA If, ElseIf, Else (Ο τελικός οδηγός για τις δηλώσεις If)

VBA Αν δήλωση

Αν τότε

VBA Εάν οι δηλώσεις σάς επιτρέπουν να ελέγξετε εάν οι εκφράσεις είναι ΑΛΗΘΙΝΕΣ ή ΛΑΘΟΣ, εκτελείτε διαφορετικό κώδικα με βάση τα αποτελέσματα.Ας δούμε ένα απλό παράδειγμα:
1 Αν Εύρος ("a2"). Τιμή> 0 Έπειτα Εύρος ("b2"). Τιμή = "Θετική"
Αυτό ελέγχει εάν η τιμή στο εύρος A2 είναι μεγαλύτερη από 0. Εάν ναι, ορίζοντας το εύρος B2 ίσο με "θετικό"Σημείωση: Κατά τη δοκιμή συνθηκών θα χρησιμοποιήσουμε τους τελεστές σύγκρισης =,>, <,, =. Θα τα συζητήσουμε λεπτομερέστερα αργότερα στο άρθρο.Εδώ είναι η σύνταξη για μια απλή εντολή If μιας γραμμής:
1 Αν [test_expression] τότε [action]
Για ευκολότερη ανάγνωση, μπορείτε να χρησιμοποιήσετε έναν χαρακτήρα συνέχισης γραμμής (υπογράμμιση) για να επεκτείνετε τις δηλώσεις If σε δύο γραμμές (όπως κάναμε στην παραπάνω εικόνα):
12 Εάν [test_expression] τότε _[δράση]
12 If Range ("a2"). Τιμή> 0 Τότε _Εύρος ("b2"). Τιμή = "Θετικό"

Τέλος εαν

Η παραπάνω δήλωση "μονής γραμμής" εάν λειτουργεί καλά όταν δοκιμάζετε μία κατάσταση. Αλλά καθώς οι δηλώσεις IF γίνονται πιο περίπλοκες με πολλαπλές συνθήκες, θα πρέπει να προσθέσετε ένα "Τέλος εάν" στο τέλος της δήλωσης if:
123 Αν Εύρος ("a2"). Τιμή> 0 ΤότεΕύρος ("b2"). Τιμή = "Θετικό"Τέλος εαν

Εδώ η σύνταξη είναι:

123 Αν [test_expression] τότε[δράση]Τέλος εαν

Το τέλος αν σημαίνει το τέλος της δήλωσης if.

Τώρα ας προσθέσουμε ένα ElseIF:

ElseIF - Πολλαπλές συνθήκες

Το ElseIf προστίθεται σε μια υπάρχουσα εντολή If. ElseIf ελέγχει εάν πληρούται μια προϋπόθεση ΜΟΝΟ αν δεν πληρούνται οι προηγούμενες προϋποθέσειςΤοΣτο προηγούμενο παράδειγμα δοκιμάσαμε αν μια τιμή κελιού είναι θετική. Τώρα θα δοκιμάσουμε επίσης εάν η τιμή κελιού είναι αρνητική με ένα ElseIf:
12345 Αν Εύρος ("a2"). Τιμή> 0 ΤότεΕύρος ("b2"). Τιμή = "Θετικό"Εύρος ElseIf ("a2"). Τιμή <0 ΤότεΕύρος ("b2"). Τιμή = "Αρνητικό"Τέλος εαν

Μπορείτε να χρησιμοποιήσετε πολλά ElseIf για να ελέγξετε για πολλαπλές συνθήκες:

1234567891011 Sub If_Multiple_Conditions ()If Range ("a2"). Value = "Cat" ΤότεΕύρος ("b2"). Τιμή = "Meow"ElseIf Range ("a2"). Value = "Dog" ΤότεΕύρος ("b2"). Τιμή = "Woof"Εύρος ElseIf ("a2"). Τιμή = "Πάπια" ΤότεΕύρος ("b2"). Τιμή = "Quack"Τέλος εανΤέλος υπο

Τώρα θα προσθέσουμε ένα Αλλού:

Αλλού

ο Αλλού θα τρέξει αν δεν πληρούνται άλλες προηγούμενες προϋποθέσεις.

Θα ολοκληρώσουμε το παράδειγμά μας χρησιμοποιώντας ένα άλλο για να δείξουμε ότι εάν η τιμή κελιού δεν είναι θετική ή αρνητική, τότε πρέπει να είναι μηδέν:

1234567 Αν Εύρος ("a2"). Τιμή> 0 ΤότεΕύρος ("b2"). Τιμή = "Θετικό"Εύρος ElseIf ("a2"). Τιμή <0 ΤότεΕύρος ("b2"). Τιμή = "Αρνητικό"ΑλλούΕύρος ("b2"). Τιμή = "Μηδέν"Τέλος εαν

Αν-Άλλο

Ο πιο συνηθισμένος τύπος εντολής If είναι ένα απλό If-Else:

1234567 Sub If_Else ()Αν Εύρος ("a2"). Τιμή> 0 ΤότεΕύρος ("b2"). Τιμή = "Θετικό"ΑλλούΕύρος ("b2"). Τιμή = "Μη θετική"Τέλος εανΤέλος υπο

Ένθετες ΕΦ

Μπορείτε επίσης να "φωλιάσετε" εάν δηλώσεις μεταξύ τους.

1234567891011 Sub Nested_Ifs ()Αν Εύρος ("a2"). Τιμή> 0 ΤότεΕύρος ("b2"). Τιμή = "Θετικό"ΑλλούIf Range ("a2"). Τιμή <0 ΤότεΕύρος ("b2"). Τιμή = "Αρνητικό"ΑλλούΕύρος ("b2"). Τιμή = "Μηδέν"Τέλος εανΤέλος εανΤέλος υπο

ΑΝ -,, Και, Xor, Όχι

Στη συνέχεια θα συζητήσουμε τους λογικούς τελεστές: Or, And, Xor, Not.

Εγώ για

ο Ή δοκιμές χειριστή εάν πληρούται τουλάχιστον μία προϋπόθεση.

Ο ακόλουθος κώδικας θα ελέγξει εάν η τιμή στο εύρος A2 είναι μικρότερη από 5.000 ή μεγαλύτερη από 10.000:

123 If Range ("a2"). Τιμή 10000 ΤότεΕύρος ("b2"). Τιμή = "Εκτός εμβέλειας"Τέλος εαν

Μπορείτε να συμπεριλάβετε πολλά Ors σε μία γραμμή:

123 If Range ("a2"). Τιμή 10000 R Range ("a2"). Τιμή = 9999 ΤότεΕύρος ("b2"). Τιμή = "Εκτός εμβέλειας"Τέλος εαν

Εάν πρόκειται να χρησιμοποιήσετε πολλά Ors, συνιστάται να χρησιμοποιήσετε έναν χαρακτήρα συνέχισης γραμμής για να διευκολύνετε την ανάγνωση του κώδικα:

123456 If Range ("a2"). Τιμή <5000 Or _Εύρος ("a2"). Τιμή> 10000 _ _Εύρος ("a2"). Τιμή = 9999 ΤότεΕύρος ("b2"). Τιμή = "Εκτός εμβέλειας"Τέλος εαν

Αν Και

Ο τελεστής And σας επιτρέπει να δοκιμάσετε εάν ΟΛΕΣ οι προϋποθέσεις πληρούνται.

123 If Range ("a2"). Value> = 5000 And Range ("a2"). Τιμή <= 10000 ΤότεΕύρος ("b2"). Τιμή = "Σε εμβέλεια"Τέλος εαν

Αν Xor

Ο χειριστής Xor σάς επιτρέπει να δοκιμάσετε εάν πληρούται ακριβώς μία προϋπόθεσηΤο Εάν πληρούνται μηδενικές προϋποθέσεις, το Xor θα επιστρέψει FALSE, Εάν πληρούνται δύο ή περισσότερες προϋποθέσεις, το Xor θα επιστρέψει επίσης false.

Έχω δει σπάνια τον Xor να χρησιμοποιείται στον προγραμματισμό VBA.

Αν όχι

Ο τελεστής Not χρησιμοποιείται για τη μετατροπή FALSE σε TRUE ή TRUE σε FALSE:

123 Υπο IF_Not ()MsgBox Όχι (Αληθινό)Τέλος υπο

Παρατηρήστε ότι ο τελεστής Not απαιτεί παρένθεση που περιβάλλει την έκφραση για εναλλαγή.

Ο τελεστής Not μπορεί επίσης να εφαρμοστεί στις προτάσεις If:

123 Εάν όχι (Εύρος ("a2"). Τιμή> = 5000 Και Εύρος ("a2"). Τιμή <= 10000) ΤότεΕύρος ("b2"). Τιμή = "Εκτός εμβέλειας"Τέλος εαν

Αν Συγκρίσεις

Όταν κάνετε συγκρίσεις, θα χρησιμοποιείτε συνήθως έναν από τους τελεστές σύγκρισης:

Χειριστής σύγκρισης Εξήγηση
= Ισο με
Οχι ίσο με
> Μεγαλύτερος από
>= Μεγαλύτερο ή ίσο με
< Λιγότερο από
<= Λιγότερο ή ίσο με

Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε έκφραση ή λειτουργία που καταλήγει σε ΑΛΗΘΙΝΟ ή ΛΑΘΟΣ

Αν - Συνάρτηση Boolean

Κατά τη δημιουργία εκφράσεων για τις δηλώσεις If, μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε συνάρτηση που παράγει TRUE ή False. Το VBA έχει μερικές από αυτές τις λειτουργίες:

Λειτουργία Περιγραφή
IsDate Επιστρέφει TRUE εάν η έκφραση είναι έγκυρη ημερομηνία
Είναι άδειο Ελέγξτε για κενά κελιά ή απροσδιόριστες μεταβλητές
IsError Ελέγξτε για τιμές σφάλματος
IsNull Ελέγξτε για τιμή NULL
IsNumeric Ελέγξτε για αριθμητική τιμή

Μπορούν να ονομαστούν έτσι:

1 Εάν IsEmpty (Εύρος ("A1"). Τιμή) Τότε MsgBox "Cell Empty"

Το Excel διαθέτει επίσης πολλές πρόσθετες λειτουργίες που μπορούν να κληθούν χρησιμοποιώντας το WorksheetFunction. Ακολουθεί ένα παράδειγμα της συνάρτησης IsText του Excel:

12 Εάν Application.WorksheetFunction.IsText (Εύρος ("a2"). Τιμή) Στη συνέχεια _MsgBox "Το κελί είναι κείμενο"

Μπορείτε επίσης να δημιουργήσετε τις δικές σας λειτουργίες που καθορίζονται από το χρήστη (UDF). Παρακάτω θα δημιουργήσουμε μια απλή συνάρτηση Boolean που επιστρέφει TRUE. Στη συνέχεια, θα καλέσουμε αυτήν τη συνάρτηση στη δήλωση If:

1234567891011 Sub If_Function ()Εάν TrueFunction ΤότεMsgBox "True"Τέλος εανΤέλος υποΣυνάρτηση TrueFunction () Ως BooleanTrueFunction = TrueΛειτουργία Τέλους

Σύγκριση κειμένου

Μπορείτε επίσης να συγκρίνετε κείμενο παρόμοιο με σύγκριση αριθμών:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Κατά τη σύγκριση κειμένου, πρέπει να έχετε υπόψη σας την "Περίπτωση" (πάνω ή κάτω). Από προεπιλογή, η VBA θεωρεί ότι τα γράμματα με διαφορετικές περιπτώσεις δεν ταιριάζουν. Με άλλα λόγια, "Α" "α".Εάν θέλετε η VBA να αγνοήσει την περίπτωση, πρέπει να προσθέσετε τη δήλωση Option Compare Text στο επάνω μέρος της μονάδας σας:
1 Επιλογή Σύγκριση κειμένου

Αφού κάνετε τη δήλωση "A" = "a":
12345 Επιλογή Σύγκριση κειμένουSub If_Text ()MsgBox "a" = "A"Τέλος υπο

VBA Αν μου αρέσει

Το VBA Like Operator σάς επιτρέπει να κάνετε ανακριβείς συγκρίσεις κειμένου. Κάντε κλικ στο σύνδεσμο "Like Operator" για να μάθετε περισσότερα, αλλά θα δείξουμε ένα βασικό παράδειγμα παρακάτω:

12345678 Dim strName ως συμβολοσειράstrName = "Κύριε Τσαρλς"Αν strName Όπως "Mr*" ΤότεMsgBox "True"ΑλλούMsgBox "False"Τέλος εαν

Εδώ χρησιμοποιούμε μπαλαντέρ αστερίσκου "*". Το * αντιπροσωπεύει οποιονδήποτε αριθμό οποιωνδήποτε χαρακτήρων. Έτσι, η παραπάνω δήλωση If θα επιστρέψει TRUE. Ο τελεστής Like είναι ένα εξαιρετικά ισχυρό, αλλά συχνά υπο-χρησιμοποιούμενο εργαλείο για την αντιμετώπιση κειμένου.

Εάν βρόχους

Οι βρόχοι VBA σάς επιτρέπουν να επαναλαμβάνετε ενέργειες. Ο συνδυασμός IF-ELSE με βρόχους είναι ένας πολύ καλός τρόπος για γρήγορη επεξεργασία πολλών υπολογισμών.

Συνεχίζοντας με το θετικό / αρνητικό μας παράδειγμα, θα προσθέσουμε έναν βρόχο για κάθε βρόχο σε μια σειρά κελιών:

1234567891011121314 Sub If_Loop ()Dim Cell ως RangeΓια κάθε κελί σε εμβέλεια ("A2: A6")Αν Cell.Value> 0 ΤότεCell.Offset (0, 1) .Value = "Θετικό"ElseIf Cell.Value <0 ΤότεCell.Offset (0, 1) .Value = "Αρνητικό"ΑλλούCell.Offset (0, 1) .Value = "Zero"Τέλος εανΕπόμενο κελίΤέλος υπο

Αν άλλα παραδείγματα

Τώρα θα δούμε μερικά πιο συγκεκριμένα παραδείγματα.

Ελέγξτε αν το κελί είναι άδειο

Αυτός ο κωδικός θα ελέγξει εάν ένα κελί είναι κενό. Εάν είναι άδειο, θα αγνοήσει το κελί. Εάν δεν είναι άδειο, θα εξάγει την τιμή κελιού στο κελί στα δεξιά:
1234567 Sub If_Cell_Empty ()Αν Εύρος ("a2"). Τιμή "" ΤότεΕύρος ("b2"). Τιμή = Εύρος ("a2"). ΤιμήΤέλος εανΤέλος υπο

Ελέγξτε αν το κελί περιέχει συγκεκριμένο κείμενο

Η συνάρτηση Instr ελέγχει εάν μια συμβολοσειρά κειμένου βρίσκεται σε άλλη συμβολοσειρά. Χρησιμοποιήστε το με μια δήλωση If για να ελέγξετε εάν ένα κελί περιέχει συγκεκριμένο κείμενο:
123 Αν Instr (Εύρος ("A2"). Τιμή, "κείμενο")> 0 ΤότεMsgbox "Βρέθηκε κείμενο"Τέλος εαν

Ελέγξτε αν το κελί περιέχει κείμενο

Αυτός ο κώδικας θα ελέγξει εάν ένα κελί είναι κείμενο:
1234567 Sub If_Cell_Is_Text ()Εάν Application.WorksheetFunction.IsText (Εύρος ("a2"). Τιμή) ΤότεMsgBox "Το κελί είναι κείμενο"Τέλος εανΤέλος υπο

Αν πάω

Μπορείτε να χρησιμοποιήσετε το αποτέλεσμα μιας δήλωσης If για "Μετάβαση σε" μια άλλη ενότητα κώδικα.
12345678910 Sub IfGoTo ()Εάν IsError (Cell.value) ΤότεΠήγαινε ΠαράλειψηΤέλος εαν«Κάποιος κώδικαςΠαραλείπω:Τέλος υπο

Διαγραφή γραμμής εάν το κελί είναι κενό

Χρησιμοποιώντας Ifs και βρόχους μπορείτε να ελέγξετε εάν ένα κελί είναι κενό και αν ναι διαγράψτε ολόκληρη τη σειρά.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell As RangeΓια κάθε κύτταρο σε εμβέλεια ("A2: A10")If Cell.Value = "" Τότε Cell.EntireRow.DeleteΕπόμενο κελίΤέλος υπο

Εάν το MessageBox Ναι / Όχι

Με τα κουτιά μηνυμάτων VBA μπορείτε να ζητήσετε από τον χρήστη να επιλέξει από διάφορες επιλογές. Το κουτί μηνυμάτων Ναι / Όχι ζητά από τον χρήστη να επιλέξει Ναι ή Όχι. Μπορείτε να προσθέσετε ένα πλαίσιο μηνύματος Ναι / Όχι σε μια διαδικασία για να ρωτήσετε τον χρήστη εάν θα ήθελε να συνεχίσει ή όχι τη διαδικασία. Χειρίζεστε την είσοδο του χρήστη χρησιμοποιώντας μια δήλωση If.Εδώ είναι το πλαίσιο μηνυμάτων Ναι/Όχι στην πράξη:
123456789101112 Sub MsgBoxVariable ()Αμυδρή απάντηση ως ακέραιοςanswer = MsgBox ("Θέλετε να συνεχίσετε;", vbQuestion + vb Ναι Όχι)Αν απάντηση = vbΝαι ΤότεMsgBox "Ναι"ΑλλούMsgBox "Όχι"Τέλος εανΤέλος υπο

VBA If, ElseIf, Else in Access VBA

Οι συναρτήσεις If, ElseIf και Else λειτουργούν ακριβώς το ίδιο στην Access VBA όπως στο Excel VBA.

Μπορείτε να χρησιμοποιήσετε μια δήλωση If για να ελέγξετε αν υπάρχουν εγγραφές σε ένα Recordset.

wave wave wave wave wave