Σύγκριση VBA Operators: Όχι ίσοι, Less από ή ίσο με

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

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

  • Σκοπός: Οι τελεστές σύγκρισης επικυρώνουν τα δεδομένα δοκιμάζοντας μια συνθήκη που αξιολογείται ως True ή False.
  • 🔢 Έξι Operators: Ίσο, μικρότερο από, μεγαλύτερο από, όχι ίσο με, μικρότερο ή ίσο με και μεγαλύτερο ή ίσο με.
  • 🔁 Διπλός ρόλος: Το σύμβολο ίσον συγκρίνει μέσα σε μια συνθήκη και εκχωρεί μια τιμή εκτός αυτής.
  • 🧪 Δήλωση If: Κάθε σύγκριση τοποθετείται μέσα στις συναρτήσεις If, ElseIf ή Do While για να ελέγχεται ποιος κώδικας εκτελείται.
  • 🔤 Κείμενο και Ημερομηνίες: Οι συμβολοσειρές συγκρίνονται χαρακτήρα προς χαρακτήρα και οι ημερομηνίες συγκρίνονται ως σειριακοί αριθμοί.
  • ⚠️ Παγίδα ακριβείας: Δύο Double Τιμές που φαίνονται πανομοιότυπες μπορεί να αποτύχουν σε μια δοκιμή ισότητας, επομένως συγκρίνετε μια στρογγυλοποιημένη διαφορά.

Σύγκριση VBA Operaκορμοί

Σύγκριση 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» είναι ο τίτλος του πλαισίου μηνύματος.

Η εκτέλεση του παραπάνω κώδικα δίνει τα ακόλουθα αποτελέσματα

Ισος 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

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

Όχι. Η VBA αξιολογεί την πρώτη σύγκριση ως προς το Σωστό ή το Λάθος και, στη συνέχεια, συγκρίνει αυτό το αποτέλεσμα με το 10, το οποίο δίνει μια παραπλανητική απάντηση. Γράψτε τα δύο τεστ ξεχωριστά και ενώστε τα με το Και.

Το Like συγκρίνει μια συμβολοσειρά με ένα μοτίβο και όχι με μια ακριβή τιμή. Τα wildcards περιλαμβάνουν τον αστερίσκο για οποιονδήποτε χαρακτήρα και το ερωτηματικό για έναν χαρακτήρα, επομένως "Guru99” Σαν “Guru*» επιστρέφει True.

Χρησιμοποιήστε τον τελεστή Is, όπως στο If ws Δεν Είναι Τίποτα Τότε. Το σύμβολο ίσον συγκρίνει τιμές, ενώ το Is ελέγχει εάν δύο μεταβλητές αντικειμένου δείχνουν στο ίδιο αντικείμενο, το οποίο είναι το μόνο έγκυρο τεστ για αντικείμενα.

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

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

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