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 bytes)
Δεν έχω δει ποτέ ένα σενάριο όπου θέλω να χρησιμοποιήσω πλήρως το όριο ενός τύπου δεδομένων VBA Long στη σύντομη καριέρα μου. Αλλά θα σας δείξω μερικά από τα παραδείγματα για να το καταλάβετε καλύτερα.
Παραδείγματα VBA Long Data Type
Ακολουθούν τα παραδείγματα του τύπου δεδομένων VBA Long excel.
Μπορείτε να κάνετε λήψη αυτού του προτύπου Excel τύπου δεδομένων μακρού VBA εδώ - Πρότυπο Excel τύπου δεδομένων μακρού VBA
VBA Long Παράδειγμα # 1
Μόλις δηλώσετε τον τύπο μεταβλητής δεδομένων ως "Long", μπορείτε να αντιστοιχίσετε τις τιμές από -2, 147, 483, 648 έως 2, 147, 483, 648.
Για παράδειγμα, δηλώστε τη μεταβλητή ως μακρύ τύπο δεδομένων.
Κώδικας:
Sub Long_Example1 () Dim k ως Long End Sub
Ας αντιστοιχίσουμε την τιμή ως συνολικό πλήθος σειρών του φύλλου εργασίας.
Για να λάβετε συνολικές σειρές καταμέτρησης στον κώδικα φύλλου εργασίας excel είναι το "Rows. Μετρώ"
Κώδικας:
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η σειρά, αλλά εάν τα δεδομένα αυξάνονται πέρα από το όριο "Integer", δηλαδή 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
Όταν εκτελούμε τους παραπάνω κωδικούς, θα δείξει τον αναφερόμενο αριθμό.