VBA Logical Operators: ΚΑΙ, Ή, ΟΧΙ, ΑΝ ΟΧΙ στο Excel VBA

⚡ Έξυπνη Σύνοψη

VBA Logical OperaΟι τελεστές συνδυάζουν διάφορες συνθήκες σε ένα μόνο αποτέλεσμα True ή False. Αυτή η σελίδα εξηγεί τις εντολές AND, OR και NOT με παραδείγματα εκτελέσιμων κουμπιών εντολών, έναν πλήρη πίνακα αλήθειας και τους λιγότερο γνωστούς τελεστές Xor, Eqv και Imp.

  • 🔗 Σκοπός: Οι λογικοί τελεστές αξιολογούν περισσότερες από μία συνθήκες μέσα σε μία μόνο εντολή If.
  • ✅ ΚΑΙ Operaβραχώδης κορυφή: Επιστρέφει True μόνο όταν κάθε συνθήκη στην οποία ενώνεται είναι True.
  • ➕ OR Operaβραχώδης κορυφή: Επιστρέφει την τιμή True όταν τουλάχιστον μία από τις συνθήκες είναι True.
  • 🔄 ΔΕΝ Operaβραχώδης κορυφή: Αντιστρέφει ένα αποτέλεσμα, μετατρέποντας το True σε False και το False σε True.
  • 📊 Πίνακας Αλήθειας: Ένα ενιαίο πλέγμα αναφοράς δείχνει το αποτέλεσμα κάθε τελεστή για κάθε συνδυασμό εισόδου.
  • 🧮 Εξτρα Operators: Οι Xor, Eqv και Imp χειρίζονται αποκλειστικές, ισοδύναμες και σιωπηρές συνθήκες.
  • ⚠️ Χωρίς βραχυκύκλωμα: Η VBA αξιολογεί κάθε μέρος μιας συνθήκης, επομένως μια δοκιμή guard πρέπει να βρίσκεται σε ένα ένθετο If.

VBA Logical Operators: ΚΑΙ, Ή, ΟΧΙ σε Excel VBA

Excel VBA Logical Operaκορμοί

Ας υποθέσουμε ότι θέλετε να επεξεργαστείτε μια παραγγελία πελάτη. Για αυτό, θέλετε πρώτα να ελέγξετε εάν το παραγγελθέν προϊόν υπάρχει ή όχι. Εάν ναι, θέλετε επίσης να ελέγξετε αν η ποσότητα που έχετε στο χέρι είναι αρκετή. Οι λογικοί τελεστές είναι χρήσιμοι σε τέτοιες περιπτώσεις. Οι λογικοί τελεστές χρησιμοποιούνται για την αξιολόγηση περισσότερων από μία συνθηκών.

Κάθε συνθήκη από μόνη της διαμορφώνεται από χειριστές σύγκρισης και επιστρέφει True ή False. Ένας λογικός τελεστής συνδυάζει στη συνέχεια αυτά τα αποτελέσματα σε μία τελική απάντηση.

Οι κύριοι λογικοί τελεστές Excel VBA ΚΑΙ, Ή, ΟΧΙ παρατίθενται στον παρακάτω πίνακα:

S / N OperaTor Περιγραφή Παράδειγμα Παραγωγή
1 ΚΑΙ ΚΑΙ: Χρησιμοποιείται για τον συνδυασμό περισσότερων από μία συνθηκών. Εάν όλες οι συνθήκες είναι αληθείς, το AND αξιολογείται ως αληθές. Εάν κάποια από τις συνθήκες είναι ψευδής, AND αξιολογείται ως ψευδής Αν (1 = 1) και (0 = 1) τότε ψευδής
2 OR Ή: Χρησιμοποιείται για τον συνδυασμό περισσότερων από μία συνθηκών. Εάν κάποια από τις συνθήκες αξιολογηθεί ως true, OR επιστρέφει true. Εάν όλα είναι ψευδή, το OR επιστρέφει ψευδές Αν (1 = 1) Ή (5 = 0) Τότε ναι
3 ΔΕΝ ΟΧΙ: Αυτό λειτουργεί σαν αντίστροφη συνάρτηση. Εάν η συνθήκη είναι αληθής, επιστρέφει ψευδής, και εάν μια συνθήκη είναι ψευδής, επιστρέφει true. Αν Όχι (0 = 0) Τότε ψευδής

Οι τρεις παραπάνω περιγραφές είναι πιο εύκολο να τις θυμάστε ως ένα ενιαίο πλέγμα εισροών και αποτελεσμάτων.

Πίνακας Αλήθειας για Λογική VBA Operaκορμοί

Ένας πίνακας αλήθειας παραθέτει κάθε συνδυασμό εισόδων και το αποτέλεσμα που επιστρέφει κάθε τελεστής. Η ανάγνωσή του μία φορά αφαιρεί την εικασία από οποιαδήποτε συνθήκη γράψετε αργότερα.

Κατάσταση Α Συνθήκη Β Α και Β Α Ή Β Δεν είναι
Οι αληθινοί Οι αληθινοί Οι αληθινοί Οι αληθινοί Ψευδής
Οι αληθινοί Ψευδής Ψευδής Οι αληθινοί Ψευδής
Ψευδής Οι αληθινοί Ψευδής Οι αληθινοί Οι αληθινοί
Ψευδής Ψευδής Ψευδής Ψευδής Οι αληθινοί

Δύο μοτίβα αξίζει να απομνημονεύσετε. ΚΑΙ παράγει True μόνο σε μία γραμμή από τις τέσσερις, επομένως περιορίζει την επιλογή. OR παράγει την τιμή False μόνο σε μία γραμμή, άρα διευρύνει μία. ΔΕΝ δέχεται μία μόνο συνθήκη αντί για δύο, γι' αυτό και έχει μία δική της στήλη.

VBA Logical OperaΠαράδειγμα Πηγής tors Code

Για λόγους απλότητας, θα συγκρίνουμε σκληρούς κωδικοποιημένους αριθμούς.

Προσθέστε κουμπιά ActiveX στο φύλλο από την επιλογή "Εισαγωγή".

Ορίστε τις ιδιότητες όπως φαίνεται στην παρακάτω εικόνα

VBA Logical Operaκορμοί
VBA Logical Operaκορμοί

Ο παρακάτω πίνακας δείχνει τις ιδιότητες που πρέπει να αλλάξετε και τις τιμές που πρέπει επίσης να ενημερώσετε.

S / N Έλεγχος Ιδιοκτησία αξία
1 Κουμπί Command1 Όνομα btnΚΑΙ
Λεζάντα ΚΑΙ Operator (1 = 1) Και (0 = 0)
2 Κουμπί Command2 Όνομα btnOR
Λεζάντα OR Operator (1 = 1) Ή (5 = 0)
3 Κουμπί Command3 Όνομα btnΟΧΙ
Λεζάντα ΔΕΝ Operator Not (0 = 0)

Προσθέστε τον ακόλουθο κώδικα στο btnAND_Click

Private Sub btnAND_Click()
If (1 = 1) And (0 = 0) Then
    MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator"
Else
    MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator"
End If
End Sub

VBA Αν ΚΑΙ OperaTor

  • "Αν (1 = 1) Και (0 = 0) Τότε" η εντολή if χρησιμοποιεί τον λογικό τελεστή AND για να συνδυάσει δύο συνθήκες (1 = 1) και (0 = 0). Εάν ισχύουν και οι δύο συνθήκες, εκτελείται ο κώδικας πάνω από τη λέξη-κλειδί 'Else'. Εάν και οι δύο συνθήκες δεν ισχύουν, εκτελείται ο κώδικας κάτω από τη λέξη-κλειδί 'Alse'.

Και οι δύο συνθήκες ισχύουν εδώ, επομένως κάνοντας κλικ στο κουμπί εμφανίζεται η ένδειξη "ΚΑΙ αξιολογήθηκε ως TRUE".

Προσθέστε τον ακόλουθο κώδικα στο btnOR_Click

Private Sub btnOR_Click()
If (1 = 1) Or (5 = 0) Then
    MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator"
Else
    MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator"
End If
End Sub

VBA Εάν OR OperaTor

  • "Αν (1 = 1) Ή (5 = 0) Τότε" Η πρόταση if χρησιμοποιεί τον λογικό τελεστή OR για να συνδυάσει δύο συνθήκες (1 = 1) ή (5 = 0). Εάν οποιαδήποτε από τις συνθήκες είναι αληθής, εκτελείται ο κώδικας παραπάνω από τη λέξη-κλειδί Else. Εάν και οι δύο συνθήκες είναι ψευδείς, εκτελείται ο κώδικας παρακάτω από τη λέξη-κλειδί Else.

Η πρώτη συνθήκη είναι αληθής και η δεύτερη είναι ψευδής, επομένως η συνάρτηση OR εξακολουθεί να επιστρέφει αληθής και το μήνυμα αναφέρει "Το OR αξιολογήθηκε ως TRUE".

Προσθέστε τον ακόλουθο κώδικα στο btnNOT_Click

Private Sub btnNOT_Click()
If Not (0 = 0) Then
    MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator"
Else
    MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator"
End If
End Sub

VBA Εάν ΟΧΙ OperaTor

  • "Αν όχι (0 = 0) Τότε" Η συνάρτηση VBA If Not χρησιμοποιεί τον λογικό τελεστή NOT για να ακυρώσει το αποτέλεσμα της συνθήκης if. Η εσωτερική συνθήκη (0 = 0) είναι true, επομένως η Not την μετατρέπει σε false και εκτελείται ο κώδικας κάτω από τη λέξη-κλειδί 'Else'. Εάν η εσωτερική συνθήκη ήταν false, η Not θα την είχε κάνει true και ο κώδικας πάνω από την 'Else' θα είχε εκτελεστεί αντ' αυτού.

Αυτά τα τρία κουμπιά δοκιμάζουν το καθένα μια σταθερή τιμή. Οι πραγματικές συνθήκες διαβάζονται από το φύλλο εργασίας και συνδυάζουν και τις δύο οικογένειες τελεστών.

Πώς να συνδυάσετε τη λογική και τη σύγκριση Operaκορμοί

Μια μακροεντολή παραγωγής σπάνια ελέγχει έναν αριθμό με κωδικοποίηση. Διαβάζει μια τιμή, τη συγκρίνει και ενώνει αρκετές από αυτές τις συγκρίσεις σε μία απόφαση. Η παρακάτω μακροεντολή εγκρίνει μια παραγγελία μόνο όταν το προϊόν υπάρχει, η ποσότητα είναι επαρκής και ο λογαριασμός πελάτη δεν είναι σε αναμονή.

Sub ApproveOrder()
    Dim QtyOnHand As Long
    Dim QtyOrdered As Long
    Dim OnHold As Boolean

    QtyOnHand = Sheet1.Range("B2").Value
    QtyOrdered = Sheet1.Range("B3").Value
    OnHold = Sheet1.Range("B4").Value

    ' All three parts must hold for the order to pass
    If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then
        Sheet1.Range("B5").Value = "Approved"
    Else
        Sheet1.Range("B5").Value = "On hold"
    End If
End Sub

Τρεις κανόνες διατηρούν μια συνδυασμένη συνθήκη ευανάγνωστη και σωστή.

  • Τοποθετήστε κάθε σύγκριση σε παρένθεση: Η VBA αξιολογεί τους τελεστές σύγκρισης πριν από τους λογικούς, αλλά οι αγκύλες καθορίζουν την ομάδα.ping προφανές και να αποτρέψει ένα λάθος όταν η κατάσταση επιδεινωθεί αργότερα.
  • Προσέξτε την προτεραιότητα του And έναντι του Or: Α ή Β και Γ διαβάζεται ως Α Ή (Β Και Γ)Αν εννοούσες (Α ή Β) και Γ, οι παρενθέσεις είναι υποχρεωτικές.
  • Εφαρμογή Όχι σε Λογική τιμή, όχι σε αριθμό: Δεν είναι σε αναμονή διαβάζεται φυσικά. Αποφύγετε Όχι 5, επειδή η συνάρτηση Not εκτελεί μια λειτουργία bitwise σε αριθμούς και επιστρέφει -6 αντί για False.

⚠️ Προειδοποίηση: Η VBA δεν βραχυκυκλώνει. Αν (ws Δεν Είναι Τίποτα) Ή (ws.Name = “Δεδομένα”) Τότε, το δεύτερο μέρος εξακολουθεί να εκτελείται ακόμα και όταν το πρώτο είναι αληθές, γεγονός που προκαλεί το σφάλμα χρόνου εκτέλεσης 91. Διαχωρίστε αυτούς τους φρουρούς σε ένθετες εντολές If.

Xor, Eqv και Imp Operators σε VBA

Οι τελεστές ΚΑΙ, Ή και ΟΧΙ καλύπτουν σχεδόν κάθε καθημερινή συνθήκη, αλλά η VBA παρέχει τρεις ακόμη λογικούς τελεστές που περιστασιακά εκφράζουν έναν κανόνα πολύ πιο καθαρά από μια φωλιά εντολών If.

OperaTor Επιστρέφει True όταν Παράδειγμα Παραγωγή
Xor Ακριβώς μία από τις δύο συνθήκες ισχύει, ποτέ και οι δύο (1 = 1) Xor (5 = 0) Οι αληθινοί
Eqv Και οι δύο συνθήκες έχουν την ίδια τιμή, είτε αληθείς είτε ψευδείς (1 = 1) Εξίσωση (2 = 2) Οι αληθινοί
Διαβολάκι Η πρώτη συνθήκη υπονοεί τη δεύτερη. μόνο το True Impact False είναι false. (1 = 1) Εμπλοκή (5 = 0) Ψευδής

Το Xor είναι το πιο πρακτικό από τα τρία. Ταιριάζει σε έναν κανόνα όπως «μια έκπτωση ισχύει για ένα μέλος του προσωπικού ή ένα μέλος πιστής επικοινωνίας, αλλά όχι για κάποιον που είναι και τα δύο». Το Eqv και το Imp εμφανίζονται κυρίως σε παλαιότερο κώδικα και σε ασκήσεις λογικής, επομένως η αναγνώρισή τους έχει μεγαλύτερη σημασία από τη συγγραφή τους.

Κατεβάστε το Excel που περιέχει τον παραπάνω κώδικα

Συχνές Ερωτήσεις

Δεν υπάρχει πρακτικό όριο, αλλά η αναγνωσιμότητα πέφτει γρήγορα πάνω από τρία ή τέσσερα. Μετακινήστε μια μακρά συνθήκη σε μια λογική μεταβλητή με περιγραφικό όνομα και, στη συνέχεια, δοκιμάστε αυτήν τη μεταβλητή στην πρόταση If.

Εφαρμόζεται σε έναν αριθμό, η συνάρτηση Not εκτελεί μια αντιστροφή bit αντί για λογική. Εφαρμόστε την μόνο σε μια σύγκριση ή μια λογική μεταβλητή, όπως Not (Ποσότητα > 0), έτσι ώστε το αποτέλεσμα να είναι True ή False.

Η λογική ταιριάζει, αλλά η σύνταξη διαφέρει. Ένας τύπος φύλλου εργασίας τις καλεί ως συναρτήσεις, AND(A1>0, B1>0). Η VBA τις τοποθετεί μεταξύ των συνθηκών, όπως στο If A1 > 0 And B1 > 0 Then.

Ναι. Επικολλήστε τη συνθήκη και ένας βοηθός τεχνητής νοημοσύνης την ξαναγράφει με πιο καθαρές αγκύλες ή την διαιρεί σε επώνυμες λογικές μεταβλητές. Επαληθεύστε την επανεγγραφή σε σχέση με έναν πίνακα αλήθειας, επειδή μια λανθασμένη απλοποίηση αλλάζει τη συμπεριφορά σιωπηλά.

Ναι. Παρέχετε την έκφραση και ένας βοηθός τεχνητής νοημοσύνης παραθέτει κάθε συνδυασμό εισόδου με το αποτέλεσμά του, ο οποίος εκθέτει γρήγορα έναν κλάδο που δεν είναι ποτέ προσβάσιμος ή μια αγκύλη τοποθετημένη σε λάθος θέση.

Συνοψίστε αυτήν την ανάρτηση με: