Τύπος μεταβλητής συμβολοσειράς
Ο τύπος δεδομένων συμβολοσειράς είναι ένας από τους πιο συνηθισμένους τύπους δεδομένων στο VBA. Αποθηκεύει "χορδές" κειμένου.
Για να δηλώσετε μια μεταβλητή μεταβλητή συμβολοσειράς, χρησιμοποιείτε τη δήλωση Dim (συντομογραφία για Dimension):
1 | Dim strName ως συμβολοσειρά |
Για να εκχωρήσετε μια τιμή σε μια μεταβλητή, χρησιμοποιείτε το πρόσημο ίσου:
1 | strName = "Fred Smith" |
Βάζοντας αυτό σε μια διαδικασία μοιάζει με αυτό:
12345678 | Sub strExample ()"δηλώστε τη συμβολοσειράDim strName ως συμβολοσειρά"συμπληρώστε τη συμβολοσειράstrName = "Fred Smith""εμφάνιση του πλαισίου μηνυμάτωνMsgBox strnameΤέλος υπο |
Εάν εκτελέσετε τον παραπάνω κώδικα, θα εμφανιστεί το ακόλουθο πλαίσιο μηνυμάτων.
Σταθερή μεταβλητή συμβολοσειράς
Στην πραγματικότητα υπάρχουν 2 τύποι μεταβλητών συμβολοσειράς - σταθερές και μεταβλητές.
Η μεταβλητή συμβολοσειράς "μεταβλητή" (φαίνεται στο προηγούμενο παράδειγμα) επιτρέπει στη συμβολοσειρά σας να έχει οποιοδήποτε μήκος. Αυτό είναι το πιο συνηθισμένο.
Η "σταθερή" μεταβλητή συμβολοσειράς ορίζει το μέγεθος της συμβολοσειράς. Μια σταθερή συμβολοσειρά μπορεί να χωρέσει έως 65.400 χαρακτήρες.
1 | Dim strName ως συμβολοσειρά *20 |
Όταν ορίζετε μια σταθερή μεταβλητή, ο αριθμός των χαρακτήρων της μεταβλητής είναι κλειδωμένος στη θέση του, ακόμη και αν χρησιμοποιείτε λιγότερους χαρακτήρες.
Παρατηρήστε τα κενά στο παρακάτω γράφημα - η μεταβλητή έχει κάτοχους θέσης για τους υπόλοιπους χαρακτήρες της συμβολοσειράς, καθώς το 'Fred Smith' είναι μικρότερο από 20 χαρακτήρες.
Ωστόσο, εάν έχετε δηλώσει μια συμβολοσειρά χωρίς να καθορίσετε το μήκος, τότε η συμβολοσειρά θα περιέχει μόνο τόσους χαρακτήρες που έχουν περάσει σε αυτήν.
Δηλώστε μεταβλητή συμβολοσειράς σε ενότητα ή καθολικό επίπεδο
Στο προηγούμενο παράδειγμα, δηλώσατε τη μεταβλητή συμβολοσειράς εντός μιας διαδικασίας. Οι μεταβλητές που δηλώνονται με μια διαδικασία μπορούν να χρησιμοποιηθούν μόνο εντός αυτής της διαδικασίας.
Αντ 'αυτού, μπορείτε να δηλώσετε μεταβλητές συμβολοσειράς σε λειτουργικό ή καθολικό επίπεδο.
Επίπεδο ενότητας
Επίπεδο ενότητας οι μεταβλητές δηλώνονται στην κορυφή των ενοτήτων κώδικα με το Αμυδρός δήλωση.
Αυτές οι μεταβλητές μπορούν να χρησιμοποιηθούν με οποιαδήποτε διαδικασία σε αυτήν την ενότητα κώδικα.
Παγκόσμιο Επίπεδο
Παγκόσμιο επίπεδο οι μεταβλητές δηλώνονται επίσης στην κορυφή των ενοτήτων κώδικα. Ωστόσο, αντί να χρησιμοποιήσετε το Αμυδρός δήλωση, χρησιμοποιείτε το Δημόσιο δήλωση για να υποδείξετε ότι η μεταβλητή συμβολοσειράς είναι διαθέσιμη για χρήση σε όλο το έργο VBA.
1 | Δημόσιο strName ως συμβολοσειρά |
Εάν δηλώσετε τη μεταβλητή συμβολοσειράς σε επίπεδο λειτουργικής μονάδας και τη χρησιμοποιήσετε σε διαφορετική ενότητα, θα εμφανιστεί σφάλμα.
Ωστόσο, εάν χρησιμοποιείτε τη δημόσια λέξη -κλειδί για να δηλώσετε τη μεταβλητή συμβολοσειράς, το σφάλμα δεν θα εμφανιστεί και η διαδικασία θα εκτελεστεί τέλεια.
Μετατροπή τιμών που είναι αποθηκευμένες ως συμβολοσειρά
Μπορεί να υπάρξει κάποια στιγμή που έχετε τιμές στο Excel που είναι αποθηκευμένες ως κείμενο - για παράδειγμα, μπορεί να έχετε εισαγάγει ένα αρχείο CSV το οποίο ενδέχεται να έχει εισαγάγει κείμενο αντί αριθμών.
Σημειώστε ότι η τιμή στο A1 είναι αριστερά ευθυγραμμισμένη, υποδεικνύοντας μια τιμή κειμένου.
Μπορείτε να χρησιμοποιήσετε ένα Λειτουργία VBA μπορεί να χρησιμοποιηθεί για τη μετατροπή αυτών των αριθμών σε κείμενο
12345678 | Sub ConvertValue ()"συμπληρώστε τη συμβολοσειράstrQty = Εύρος ("A1")"συμπληρώστε το διπλό με τη συμβολοσειράdblQty = strQty"συμπληρώστε το εύρος με τον αριθμόΕύρος ("A1") = dblQtyΤέλος υπο |
Μόλις εκτελέσετε τον κωδικό, ο αριθμός θα μετακινηθεί προς τα δεξιά, υποδεικνύοντας ότι τώρα είναι αποθηκευμένος ως αριθμός.
Αυτό είναι ιδιαίτερα χρήσιμο όταν περιηγείστε σε ένα μεγάλο εύρος κελιών.
123456789101112131415 | Sub ConvertValue ()Dim strQty As String, dblQty As DoubleDim rw Ως ακέραιος, i ως ακέραιος«μετρήστε τις γραμμές για μετατροπήrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Countβρόχο στα κελιά και μετατροπή του καθενός σε έναν αριθμόΓια i = 0 έως rw - 1"συμπληρώστε τη συμβολοσειράstrQty = Εύρος ("A1"). Offset (i, 0)"συμπληρώστε το διπλό με τη συμβολοσειράdblQty = strQty"συμπληρώστε το εύρος με τον αριθμόΕύρος ("A1"). Offset (i, 0) = dblQtyΕπόμενο iΤέλος υπο |
Το αποτέλεσμα θα είναι ότι όλα τα κελιά θα μετατραπούν σε αριθμούς
Κουραστήκατε να ψάχνετε για παραδείγματα κώδικα VBA; Δοκιμάστε το AutoMacro!
Μετατροπή συμβολοσειράς που είναι αποθηκευμένη ως τιμή
Ομοίως, μπορεί να υπάρχουν τιμές που πρέπει να μετατρέψετε από συμβολοσειρά σε τιμή - για παράδειγμα, εάν χρειάζεστε ένα μηδενικό για έναν αριθμό τηλεφώνου.
123456789101112131415 | Sub ConvertString ()Dim strPhone As String, dblPhone As DoubleDim rw Ως ακέραιος, i ως ακέραιος«μετρήστε τις γραμμές για μετατροπήrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Countβρόχο στα κελιά και μετατροπή του καθενός σε έναν αριθμόΓια i = 0 έως rw - 1"συμπληρώστε τη συμβολοσειράdblPhone = Εύρος ("A1"). Offset (i, 0)"συμπληρώστε το διπλό με τη συμβολοσειράstrPhone = "'0" & dblPhone"συμπληρώστε το εύρος με τον αριθμόΕύρος ("A1"). Offset (i, 0) = strphoneΕπόμενο iΤέλος υπο |
Σημειώστε ότι πρέπει να ξεκινήσετε τη συμβολοσειρά κειμένου με απόστροφο (‘), πριν από το μηδέν για να πείτε στο Excel να εισαγάγει την τιμή ως συμβολοσειρά.