Σύγκριση VBA Operators: Όχι ίσοι, Less από ή ίσο με
⚡ Έξυπνη Σύνοψη
Σύγκριση VBA OperaΟι τελεστές δοκιμάζουν μια τιμή σε σχέση με μια άλλη και επιστρέφουν True ή False. Αυτή η σελίδα ορίζει τους έξι τελεστές, τους δείχνει μέσα σε μια πρόταση If, εξηγεί πώς συγκρίνονται το κείμενο και οι ημερομηνίες και παραθέτει τα λάθη που παράγουν λανθασμένα αποτελέσματα.

Σύγκριση VBA Operaκορμοί
Αυτοί είναι τελεστές που χρησιμοποιούνται για τη σύγκριση τιμών. Οι τελεστές σύγκρισης περιλαμβάνουν τους τελεστές ίσο με, μικρότερο από, μεγαλύτερο από και όχι ίσο με.
Οι τελεστές σύγκρισης χρησιμοποιούνται για τη σύγκριση τιμών για σκοπούς επικύρωσης. Ας υποθέσουμε ότι αναπτύσσετεping μια απλή εφαρμογή σημείου πώλησης. Σε αυτήν την εφαρμογή, θέλετε να επικυρώσετε τις τιμές που εισαγάγατε πριν από την καταχώριση. Σε αυτές τις περιπτώσεις, μπορείτε να χρησιμοποιήσετε τελεστές σύγκρισης. Αυτός ο τελεστής θα ελέγξει με τους αρνητικούς αριθμούς ή για να διασφαλίσει ότι το καταβληθέν ποσό δεν υπερβαίνει το χρεωθέν ποσό. Οι τελεστές σύγκρισης είναι χρήσιμοι σε τέτοιες περιπτώσεις.
Κάθε σύγκριση επιστρέφει μία από τις δύο τιμές, True ή False, και ποτέ αριθμό. Αυτό το αποτέλεσμα είναι αυτό στο οποίο ενεργεί μια πρόταση If.
Ο παρακάτω πίνακας παραθέτει τους τελεστές σύγκρισης που ορίζονται στο VBA.
| OperaTor | Περιγραφή |
|---|---|
| = | Equal: ελέγχει εάν δύο τιμές είναι ίσες. Χρησιμοποιείται επίσης ως χειριστής εκχώρησης |
| < | Less από: ελέγχει αν η τιμή στα αριστερά είναι μικρότερη από την τιμή στα δεξιά |
| > | Μεγαλύτερο από: ελέγχει αν η τιμή στα αριστερά είναι μεγαλύτερη από την τιμή στα δεξιά |
| <> | Δεν είναι ίσο με: ελέγχει αν δύο τιμές είναι διαφορετικές μεταξύ τους |
| <= | Less από ή ίσο με: ελέγχει αν η τιμή στα αριστερά είναι μικρότερη ή ίδια με την τιμή στα δεξιά |
| >= | Μεγαλύτερο ή ίσο με: ελέγχει αν η τιμή στα αριστερά είναι μεγαλύτερη ή ίση με την τιμή στα δεξιά |
Βλέποντας κάθε τελεστή εφαρμοσμένο σε δύο μεταβλητές, το επιστρεφόμενο αποτέλεσμα είναι πιο εύκολο να προβλεφθεί.
Σύγκριση VBA Operators με Παράδειγμα
Ο παρακάτω πίνακας δείχνει τη σύγκριση Excel VBA Operatortors με παραδείγματα και έξοδο.
| S / N | OperaTor | Παράδειγμα | Παραγωγή |
|---|---|---|---|
| 1 | = | Αν x = z Τότε | Επιστρέφει true αν είναι ίσα, διαφορετικά επιστρέφει false |
| 2 | < | Αν x < z Τότε | Επιστρέφει true εάν το x είναι μικρότερο από το z, διαφορετικά επιστρέφει false |
| 3 | > | Αν x > z Τότε | Επιστρέφει true εάν το x είναι μεγαλύτερο από το z, διαφορετικά επιστρέφει false |
| 4 | <> | Αν x <> z Τότε | Επιστρέφει true αν δεν είναι ίσα, διαφορετικά επιστρέφει false |
| 5 | <= | Αν x <= z Τότε | Επιστρέφει true αν το x είναι μικρότερο ή ίσο με z, διαφορετικά επιστρέφει false |
| 6 | >= | Αν x >= z Τότε | Επιστρέφει true εάν το x είναι μεγαλύτερο ή ίσο του z, διαφορετικά επιστρέφει false |
Παράδειγμα πηγαίο κώδικα
Ίση Σύγκριση OperaTor
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
ΕΔΩ,
- «Αν 2 = 1 Τότε… Αλλιώς… Τέλος Αν» χρησιμοποιεί τη δήλωση if για να αξιολογήσει τη συνθήκη "2 = 1"
- «MsgBox... " Είναι μια ενσωματωμένη λειτουργία που εμφανίζει ένα πλαίσιο μηνυμάτων.
- Η πρώτη παράμετρος "True" ή "False" είναι αυτή που θα εμφανιστεί στο πλαίσιο μηνύματος. Στο παράδειγμά μας, το 2 δεν είναι ίσο με 1, επομένως, θα εμφανίσει "false" στο πλαίσιο μηνυμάτων.
- Η δεύτερη παράμετρος "vbOKOnly" είναι το κουμπί που εμφανίζεται στο πλαίσιο μηνύματος
- Η τρίτη παράμετρος «Ίσο Operator» είναι ο τίτλος του πλαισίου μηνύματος.
Η εκτέλεση του παραπάνω κώδικα δίνει τα ακόλουθα αποτελέσματα
Αυτή η μοναδική δοκιμή είναι η απλούστερη μορφή. Οι πραγματικές μακροεντολές συνδυάζουν συγκρίσεις και διακλαδώσεις μεταξύ διαφόρων αποτελεσμάτων.
Πώς να χρησιμοποιήσετε τη σύγκριση Operators σε μια δήλωση If
Ένας τελεστής σύγκρισης σπάνια είναι χρήσιμος από μόνος του. Το αποτέλεσμα του "Αληθές" ή "Λάθος" τροφοδοτεί μια δομή απόφασης και η πρόταση "Αν" είναι αυτή που θα χρησιμοποιείτε περισσότερο. Το παρακάτω παράδειγμα βαθμολογεί μια βαθμολογία που διατηρείται στο κελί A1 και γράφει το αποτέλεσμα δίπλα της.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
Η μακροεντολή διαβάζει την παρτιτούρα μία φορά και στη συνέχεια την δοκιμάζει με βάση τρεις συνθήκες κατά σειρά. Τέσσερα σημεία εξηγούν γιατί συμπεριφέρεται με αυτόν τον τρόπο.
- Η τάξη έχει σημασία: Η VBA σταματά στον πρώτο κλάδο που επιστρέφει True. Τοποθέτηση Βαθμολογία >= 50 πριν Βαθμολογία >= 90 θα χαρακτήριζε κάθε υψηλή βαθμολογία ως πέρασμα.
- Άλλο είναι το παν: Οποιαδήποτε τιμή που αποτυγχάνει σε κάθε προηγούμενη δοκιμή περνάει στην Else, επομένως καμία είσοδος δεν μένει ανεξέλεγκτη.
- Χωρίς αλυσιδωτή σύνδεση: Η VBA δεν μπορεί να διαβάσει 0 <= Βαθμολογία <= 100Γράψε Αν Βαθμολογία >= 0 και Βαθμολογία <= 100 τότε χρησιμοποιώντας τα λογικούς τελεστές Αντιθέτως.
- Ίδια δοκιμή, άλλες δομές: Η ίδια συνθήκη οδηγεί τις συναρτήσεις Do While και Select Case, επομένως οι τελεστές μεταφέρονται σε κάθε βρόχο που γράφετε.
💡 Συμβουλές: Δηλώστε τη μεταβλητή με αριθμητικό τύπο, όπως φαίνεται με Dim Score για όσο διάστημαΕάν η τιμή παραμείνει μια παραλλαγή που περιέχει κείμενο, «9» > «10» Επιστρέφει True επειδή η σύγκριση γίνεται χαρακτήρα προς χαρακτήρα.
Σύγκριση κειμένου και ημερομηνιών σε VBA
Numbers συγκρίνονται ακριβώς όπως υποδηλώνει η αριθμητική, αλλά το κείμενο και οι ημερομηνίες ακολουθούν τους δικούς τους κανόνες και αμφότερα εκπλήσσουν τους αρχάριους.
Οι συμβολοσειρές συγκρίνονται κατά έναν χαρακτήρα κάθε φορά χρησιμοποιώντας τη θέση ταξινόμησής τους, επομένως η συνάρτηση "Apple" < "Banana" επιστρέφει True. Από προεπιλογή, η σύγκριση κάνει διάκριση πεζών-κεφαλαίων, που σημαίνει ότι "guru99" = "GuruΤο 99” επιστρέφει False. Τοποθέτηση Επιλογή Σύγκριση κειμένου στην κορυφή της ενότητας κάνει κάθε σύγκριση συμβολοσειρών σε αυτήν την περίπτωση αγνόησης της ενότητας. Για μία μόνο δοκιμή χωρίς να αλλάξετε τη ενότητα, χρησιμοποιήστε το StrComp με το όρισμα vbTextCompare.
Οι ημερομηνίες αποθηκεύονται ως σειριακοί αριθμοί που μετρώνται από τις 30 Δεκεμβρίου 1899, επομένως συγκρίνονται άμεσα με τους ίδιους έξι τελεστές. Γραφή Εάν Ημερομηνία Παράδοσης < Ημερομηνία Τότε Εντοπίζει σωστά ένα εκπρόθεσμο στοιχείο, επειδή η συνάρτηση Date επιστρέφει την τρέχουσα ημερομηνία συστήματος ως τον ίδιο τύπο σειριακού αριθμού. Η μία παγίδα είναι μια ημερομηνία που διατηρείται ως κείμενο: Η ημερομηνία "01/02/2026" που διαβάζεται από ένα εισαγόμενο αρχείο είναι μια συμβολοσειρά, όχι μια ημερομηνία, και συγκρίνεται αλφαβητικά. Μετατρέψτε το με το CDate πριν το δοκιμάσετε.
Η γνώση των κανόνων για κάθε τύπο εξαλείφει τις περισσότερες εκπλήξεις, αλλά μερικά σφάλματα εξακολουθούν να εντοπίζονται σε έμπειρους προγραμματιστές.
Συνηθισμένα λάθη κατά τη σύγκριση τιμών σε VBA
Τα πέντε προβλήματα που ακολουθούν ευθύνονται για τις περισσότερες συγκρίσεις που επιστρέφουν ένα μη αναμενόμενο αποτέλεσμα.
- Η εργασία θεωρήθηκε λανθασμένα ως σύγκριση: Έξω από μια συνθήκη, x = 5 αποθηκεύει 5 στο x. Μέσα στο If, τα ίδια σύμβολα ελέγχουν την ισότητα. Η VBA δεν έχει ξεχωριστό τελεστή ==, οπότε διαβάστε προσεκτικά τα συμφραζόμενα.
- Δοκιμές Double τιμές για ακριβή ισότητα: Η αποθηκευμένη ακρίβεια σημαίνει ότι 0.1 + 0.2 = 0.3 επιστρέφει False. Συγκρίνετε τη στρογγυλοποιημένη διαφορά, για παράδειγμα Αν Abs(a – b) < 0.000001 Τότε.
- Σύγκριση οτιδήποτε με Null: Το Null δεν ισούται με τίποτα, ούτε καν με ένα άλλο Null. Δοκιμάστε με IsNull αντί για = Μηδενικό.
- Σύγκριση κειμένου με έναν αριθμό: Ένα κελί που περιέχει το «100» ως κείμενο δεν ισούται με τον αριθμό 100. Μετατρέψτε το με CLng ή CDbl πριν από τη δοκιμή.
- Ανάγνωση .Text αντί για .Value: Η ιδιότητα .Text επιστρέφει αυτό που εμφανίζεται, το οποίο περικόπτεται κατά πλάτος στήλης και μορφοποίηση. Να συγκρίνετε πάντα το .Value.
Κατεβάστε το παραπάνω αρχείο Excel Code

