VBA Long (Παράδειγμα) - Οδηγός βήμα προς βήμα για το Long Data Type στο Excel VBA

Τι είναι ένας μεγάλος τύπος δεδομένων στο VBA;

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

«Μακρύ», όπως λέει το όνομα, πρέπει να έχει την αξία του κάτι μεγάλου. Το "Long" είναι ένας αριθμητικός τύπος δεδομένων στο VBA Excel.

Ο μεγάλος τύπος δεδομένων στο Excel VBA μπορεί να διατηρήσει τις τιμές από 0 έως 2, 147, 483, 647 για θετικούς αριθμούς και για τον αρνητικό αριθμό που μπορεί να κρατήσει από 0 έως -2, 147, 483, 648.

Ο τύπος δεδομένων VBA Long απαιτεί 4 byte μνήμης αποθήκευσης του υπολογιστή σας. Αυτή είναι η μεταβλητή μνήμη τύπου δεδομένων διπλού ακέραιου (2 bytes) και η μισή από τη μεταβλητή μνήμη διπλού τύπου δεδομένων (8 byte)

Δεν έχω δει ποτέ ένα σενάριο όπου θέλω να χρησιμοποιήσω πλήρως το όριο ενός τύπου δεδομένων VBA Long στη σύντομη καριέρα μου. Αλλά θα σας δείξω μερικά από τα παραδείγματα για να το καταλάβετε καλύτερα.

Παραδείγματα VBA Long Data Type

Ακολουθούν τα παραδείγματα του τύπου δεδομένων VBA Long excel.

VBA Long Παράδειγμα # 1

Μόλις δηλώσετε τον τύπο μεταβλητής δεδομένων ως "Long", μπορείτε να αντιστοιχίσετε τις τιμές από -2, 147, 483, 648 έως 2, 147, 483, 648.

Για παράδειγμα, δηλώστε τη μεταβλητή ως μακρύ τύπο δεδομένων.

Κώδικας:

Sub Long_Example1 () Dim k As Long End Sub

Ας αντιστοιχίσουμε την τιμή ως συνολικό πλήθος σειρών του φύλλου εργασίας.

Για να λάβετε τις συνολικές σειρές μέτρησης στον κώδικα φύλλου εργασίας του excel είναι "Σειρές. Μετρώ"

Κώδικας:

Sub Long_Example1 () Dim k As Long k = Rows.Count End Sub

Τώρα δείξτε την τιμή στο πλαίσιο μηνύματος.

Κώδικας:

Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub

Εκτελέστε αυτόν τον κώδικα και δείτε τι μετράνε οι συνολικές σειρές στο φύλλο εργασίας.

Λέει ότι έχουμε περισσότερες από 1 εκατομμύριο σειρές στο φύλλο εργασίας.

Τώρα για καλύτερη κατανόηση, θα αλλάξω τον τύπο δεδομένων από LONG σε INTEGER.

Κώδικας:

Sub Long_Example1 () Dim k As Integer k = Rows.Count MsgBox k End Sub

Εάν εκτελέσω τον κωδικό VBA, θα λάβω το μήνυμα σφάλματος ως "Overflow".

Ο λόγος για τον οποίο λάβαμε αυτό το σφάλμα στο VBA επειδή ο τύπος δεδομένων "Integer" μπορεί να διατηρήσει τις τιμές μόνο από -31768 έως 32767. Σε αυτήν την περίπτωση, "Σειρές. Η καταμέτρηση "θα επιστρέψει τον αριθμό που υπερβαίνει το όριο της μεταβλητής" ακέραιος ".

Αν αντιστοιχίσετε την τιμή άνω του 1 εκατομμυρίου στη μεταβλητή που μπορεί να κρατήσει μόνο 32767 προκαλεί το σφάλμα υπερχείλισης εδώ.

VBA Long Παράδειγμα # 2

Βρείτε την τελευταία σειρά χρησιμοποιώντας μακρά μεταβλητή

Η εύρεση της τελευταίας γραμμής του φύλλου εργασίας είναι η πιο σημαντική από την κωδικοποίηση. Για την εύρεση της τελευταίας γραμμής του φύλλου εργασίας απαιτείται μεταβολή της μεταβλητής. Κατά τη δήλωση της μεταβλητής και την εκχώρηση ενός τύπου δεδομένων απαιτείται κάποια κοινή λογική.

Ας υποθέσουμε ότι τα δεδομένα τελειώνουν στις 25000 σειρές, όπως φαίνεται στην παρακάτω εικόνα.

Τώρα ξέρω ότι ο αριθμός σειράς που χρησιμοποιήθηκε τελευταία είναι 25000. Γι 'αυτό, δεν χρειαζόμαστε τον τύπο δεδομένων "LONG" επειδή ο τύπος δεδομένων "INTEGER" μπορεί να μου δώσει την τελευταία σειρά.

Ανατρέξτε στον παρακάτω κώδικα για τις πληροφορίες σας.

Κώδικας:

Sub Long_Example1 () Dim k As Integer k = Cells (Rows.Count, 1). End (xlUp). Row MsgBox k End Sub

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

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

Για παράδειγμα, θα αυξήσω τα δεδομένα σε 32768 ου σειρές.

Τώρα, αν εκτελέσω ξανά τον ίδιο κωδικό, δεν θα λάβω την τιμή. Αντίθετα, θα λάβω το σφάλμα όπως παρακάτω.

Θυμηθείτε, έχω αυξήσει το όριο κατά μόλις 1 πέρα ​​από το όριο της τιμής "Integer", οπότε έχω ένα σφάλμα Overflow.

Επομένως, είναι σημαντικό να γνωρίζετε το μέγεθος των δεδομένων σας προτού εκχωρήσετε έναν τύπο δεδομένων στη μεταβλητή. Είναι πάντα μια καλύτερη επιλογή να δηλώσετε τη μεταβλητή ως "ΜΑΚΡΥ" χωρίς να σκεφτείτε το μέγεθος των δεδομένων σας στο μέλλον.

Εναλλακτικές λύσεις στο Excel VBA Long Variable

Πρέπει ήδη να σκεφτείτε τι εάν θέλουμε να κρατήσουμε την τιμή περισσότερο από το όριο μιας μακράς μεταβλητής. Για αυτό, πρέπει να χρησιμοποιήσουμε διαφορετικούς τύπους δεδομένων, δηλαδή, είτε το VBA "String" είτε το "Variant".

Θυμηθείτε, τη στιγμή που διασχίζει τον αριθμό 2147483647, θα λάβουμε ένα σφάλμα υπερχείλισης στο VBA με τον τύπο δεδομένων LONG. Για να αποθηκεύσουμε περισσότερα από αυτόν τον αριθμό, πρέπει να χρησιμοποιήσουμε τον τύπο δεδομένων "String" ή "Variant".

Για χορδή

Κώδικας:

Sub Long_Example2 () Dim k As String k = 2147483648 MsgBox k End Sub

Για παραλλαγή

Κώδικας:

Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub

Όταν εκτελούμε τους παραπάνω κωδικούς, θα δείξει τον αναφερόμενο αριθμό.

ενδιαφέροντα άρθρα...