Τύπος μακράς μεταβλητής
Το VBA Μακρύς ο τύπος δεδομένων χρησιμοποιείται για την αποθήκευση πολύ μεγάλων τιμών δεδομένων (-2,147,483,648 έως 2,147,483,648). Μπορεί να αποθηκεύσει μόνο ακέραιους αριθμούς (χωρίς δεκαδικά ψηφία).
Για να δηλώσετε μια μεγάλη μεταβλητή, χρησιμοποιείτε τη δήλωση Dim (συντομογραφία για Dimension):
1 | Dim lngA τόσο μακρύ |
Στη συνέχεια, για να εκχωρήσετε μια τιμή σε μια μεταβλητή, χρησιμοποιήστε απλά το πρόσημο ίσου:
1 | lngA = 30000 |
Βάζοντας αυτό σε μια διαδικασία μοιάζει με αυτό:
12345678 | Sub lngΠαράδειγμα ()«δηλώστε τη μεγάλη μεταβλητήDim lngA τόσο μακρύ"συμπληρώστε τη μεγάλη μεταβλητήlngA = 30000"εμφάνιση του πλαισίου μηνυμάτωνMsgBox lngAΤέλος υπο |
Εάν εκτελέσετε τον παραπάνω κώδικα, θα εμφανιστεί το ακόλουθο πλαίσιο μηνυμάτων.
Τύπος δεδομένων LongLong
Ο τύπος δεδομένων LongLong είναι διαθέσιμος μόνο στην έκδοση 64 bit του Microsoft Office. Εάν εκτελείτε μια έκδοση 32 bit του Office σε ένα μηχάνημα 64 bit, αυτός ο τύπος δεδομένων δεν θα είναι διαθέσιμος. Υποστηρίζει αριθμούς στην περιοχή -9,223,372,036,854,775,808 έως 9,223,372,036,854,775,807.
1 | Dim lngA ως LongLong |
Τύπος δεδομένων LongPtr
Το LongPtr εισήχθη στο VBA προκειμένου να υποστηρίξει την έκδοση 64 bit του Microsoft Office. Σε σύστημα 32 bit, αντιμετωπίζεται ως Long και σε συστήματα 64 bit αντιμετωπίζεται ως LongLong.
1 | Dim lngA ως LongPtr |
Σημείωση: Το LongPtr δεν είναι διαθέσιμο στο Excel 2007 ή παλαιότερο.
Δεκαδικές τιμές & Τύποι μεγάλων δεδομένων
Οι μεγάλες μεταβλητές δεν μπορούν να αποθηκεύσουν δεκαδικές τιμές. Εάν περάσετε έναν δεκαδικό αριθμό για μεγάλο χρονικό διάστημα, ο δεκαδικός αριθμός θα στρογγυλοποιηθεί για να αφαιρεθεί το δεκαδικό.
Επομένως, εάν εκτελούσατε την παρακάτω διαδικασία:
12345678 | Sub LngExampleB ()«δηλώστε τη μεγάλη μεταβλητήDim lngA τόσο μακρύ"συμπληρώστε τη μεγάλη μεταβλητήlngA = 3524,12"εμφάνιση του πλαισίου μηνυμάτωνMsgBox lngAΤέλος υπο |
Η δεκαδική τιμή θα στρογγυλοποιηθεί προς τα κάτω, επιστρέφοντας το ακόλουθο μήνυμα:
Ωστόσο, αυτός ο κωδικός παρακάτω:
12345678 | Sub LngExampleB ()«δηλώστε τη μεγάλη μεταβλητήDim lngA τόσο μακρύ"συμπληρώστε τη μεγάλη μεταβλητήlngA = 3524,12"εμφάνιση του πλαισίου μηνυμάτωνMsgBox lngAΤέλος υπο |
Θα επιστρέψει το ακόλουθο πλαίσιο μηνυμάτων (στρογγυλοποίηση):
Δεκαδικός / Διπλός τύπος δεδομένων
Εάν θέλετε να αποθηκεύσετε ένα δεκαδικό ψηφίο, θα πρέπει να δηλώσετε μια μεταβλητή που επιτρέπει δεκαδικά ψηφία. Υπάρχουν 3 τύποι δεδομένων που μπορείτε να χρησιμοποιήσετε - μεμονωμένα, διπλά ή νομίσματα.
1 | Dim sngΤιμή ως Single |
1 | Dim dblΤιμή ως διπλό |
1 | Dim curPrice as Currency |
Ο τύπος μεμονωμένων δεδομένων θα στρογγυλοποιήσει το δεκαδικό σημείο ελαφρώς διαφορετικά στον τύπο δεδομένων διπλού και νομίσματος, επομένως είναι προτιμότερο να χρησιμοποιείτε διπλό προς μονό για ακρίβεια. Ένα διπλό μπορεί να έχει έως και 12 δεκαδικά ψηφία, ενώ το νόμισμα και το ενιαίο μπορεί να έχουν και τα 4 δεκαδικά ψηφία.
Δηλώστε μεγάλη μεταβλητή σε ενότητα ή παγκόσμιο επίπεδο
Στα προηγούμενα παραδείγματα, δηλώσαμε τη μεταβλητή Long μέσα σε μια διαδικασία. Οι μεταβλητές που δηλώνονται με μια διαδικασία μπορούν να χρησιμοποιηθούν μόνο εντός αυτής της διαδικασίας.
Αντ 'αυτού, μπορείτε να δηλώσετε μεγάλες μεταβλητές σε ενότητα ή παγκόσμιο επίπεδο.
Επίπεδο ενότητας
Επίπεδο ενότητας οι μεταβλητές δηλώνονται στην κορυφή των ενοτήτων κώδικα με το Αμυδρός δήλωση.
Αυτές οι μεταβλητές μπορούν να χρησιμοποιηθούν με οποιαδήποτε διαδικασία σε αυτήν την ενότητα κώδικα.
Παγκόσμιο Επίπεδο
Παγκόσμιο επίπεδο οι μεταβλητές δηλώνονται επίσης στην κορυφή των ενοτήτων κώδικα. Ωστόσο, αντί να χρησιμοποιήσετε το Αμυδρός δήλωση, χρησιμοποιήστε το Δημόσιο δήλωση για να υποδείξετε ότι η μεγάλη μεταβλητή είναι διαθέσιμη για χρήση σε όλο το έργο VBA.
1 | Δημόσια lngA τόσο μακρά |
Εάν δηλώνατε τη μεγάλη μεταβλητή σε επίπεδο μονάδας και στη συνέχεια προσπαθήσατε να τη χρησιμοποιήσετε σε διαφορετική ενότητα, θα εμφανιστεί σφάλμα.
Ωστόσο, εάν είχατε χρησιμοποιήσει τη δημόσια λέξη -κλειδί για να δηλώσετε τη μεγάλη μεταβλητή, το σφάλμα δεν θα εμφανιστεί και η διαδικασία θα εκτελεστεί τέλεια.
Μορφή Long Stored as String
Ενδέχεται να υπάρχει κάποια στιγμή κατά την οποία θέλετε να μορφοποιήσετε έναν μακρύ τύπο δεδομένων σε μια συμβολοσειρά - για παράδειγμα μια ημερομηνία ή μπορεί να θέλετε να εμφανίσετε ένα σύμβολο νομίσματος.
Για να το επιτύχετε αυτό, χρησιμοποιείτε τη λειτουργία Μορφοποίηση.
Η ακόλουθη διαδικασία:
1234567891011 | Sub TestLongToString ()"δηλώστε τη μεταβλητή συμβολοσειράςDim strDate ως συμβολοσειρά«δηλώστε το μακρύ και συμπληρώστε την τιμήDim lngΗμερομηνία όσο καιρόlngDate = 44055«μετατρέψτε το long σε μια συμβολοσειρά μορφοποιημένη ως ημερομηνίαstrDate = Μορφή (lngDate, "ημ mmmm εεεε")"δείτε το αποτέλεσμαDebug.Print strDateΤέλος υπο |
θα επιστρέψει το αποτέλεσμα παρακάτω:
και την ακόλουθη διαδικασία
1234567891011 | Sub TestLongtoCurrencyString ()"δηλώστε τη μεταβλητή συμβολοσειράςDim strMoney As String«δηλώστε το μακρύ και συμπληρώστε την τιμήDim lngValue As LonglngValue = 44055«μετατρέψτε το long σε συμβολοσειρά με σύμβολο νομίσματοςstrMoney = Μορφή (lngValue, "$#, ## 0")"δείτε το αποτέλεσμαMsgBox strMoneyΤέλος υπο |
θα επέστρεφε αυτό το αποτέλεσμα: