Κατανόηση μεταβλητών και σταθερών σε μακροεντολές Excel

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

Όπως και άλλες γλώσσες προγραμματισμού, τα δεδομένα μπορούν να αποθηκευτούν σε μεταβλητές ή σταθερές (και οι δύο συχνά αναφέρονται ως δοχεία δεδομένων). Αυτή είναι η κύρια διαφορά μεταξύ αυτών των εννοιών. Το πρώτο μπορεί να αλλάξει ανάλογα με το τι συμβαίνει στο πρόγραμμα. Με τη σειρά τους, οι σταθερές ορίζονται μία φορά και δεν αλλάζουν την τιμή τους.

Οι σταθερές μπορεί να είναι χρήσιμες εάν χρειαστεί να χρησιμοποιήσετε την ίδια μεγάλη τιμή πολλές φορές. Αντί να αντιγράψετε τον αριθμό, μπορείτε απλώς να γράψετε το όνομα της σταθεράς. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τη σταθερά "Pi" για να αποθηκεύσετε το Pi, που είναι μια σταθερή τιμή. Είναι πολύ μεγάλο και κάθε φορά είναι αρκετά δύσκολο να το γράψεις ή να το ψάξεις και να το αντιγράψεις. Και έτσι, αρκεί να γράψετε δύο χαρακτήρες και το περιβάλλον χρησιμοποιεί αυτόματα τον επιθυμητό αριθμό.

Ο χρήστης του Excel πρέπει να δηλώνει μεταβλητές εάν χρειάζεται να αλλάζει την τιμή που είναι αποθηκευμένη σε αυτές κατά διαστήματα. Για παράδειγμα, μπορείτε να ορίσετε μια μεταβλητή που ονομάζεται sVAT_Rate, η οποία θα αποθηκεύει τον τρέχοντα συντελεστή ΦΠΑ για το προϊόν. Εάν αλλάξει, μπορείτε να το διορθώσετε γρήγορα. Αυτό είναι ιδιαίτερα χρήσιμο για όσους δραστηριοποιούνται στις Ηνωμένες Πολιτείες, όπου ορισμένα αγαθά ενδέχεται να μην υπόκεινται καθόλου σε ΦΠΑ (και αυτός ο φόρος διαφέρει επίσης από πολιτεία σε πολιτεία).

Τύποι δεδομένων

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

Δεν συνιστάται η χρήση τύπου δεδομένων που καταλαμβάνει περισσότερο χώρο στη μνήμη για μικρούς αριθμούς. Για παράδειγμα, για τον αριθμό 1, αρκεί να χρησιμοποιήσετε τον τύπο Byte. Αυτό θα έχει θετική επίδραση στην απόδοση της εκτελέσιμης μονάδας, ειδικά σε αδύναμους υπολογιστές. Αλλά είναι σημαντικό να μην πάμε πολύ μακριά εδώ. Εάν χρησιμοποιείτε έναν τύπο δεδομένων που είναι πολύ συμπαγής, μια υπερμεγέθη τιμή ενδέχεται να μην ταιριάζει σε αυτόν.

Δήλωση σταθερών και μεταβλητών

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

Για να δηλώσετε μια μεταβλητή, χρησιμοποιείται η δήλωση Dim. Για παράδειγμα, όπως αυτό:

Dim Variable_Name As Integer

Variable_Name είναι το όνομα της μεταβλητής. Στη συνέχεια, γράφεται ο τελεστής As, υποδεικνύοντας τον τύπο δεδομένων. Αντί για τις συμβολοσειρές "Variable_Name" και "Integer", μπορείτε να εισαγάγετε το δικό σας όνομα και τύπο δεδομένων.

Οι σταθερές μπορούν επίσης να δηλωθούν, αλλά πρέπει πρώτα να καθορίσετε την τιμή τους. Μία από τις επιλογές είναι:

Const iMaxCount = 5000

Για να είμαστε δίκαιοι, σε ορισμένες περιπτώσεις μπορείτε να κάνετε χωρίς να δηλώσετε μια μεταβλητή, αλλά σε αυτήν την περίπτωση θα τους εκχωρηθεί αυτόματα ο τύπος Variant. Ωστόσο, αυτό δεν συνιστάται για τους ακόλουθους λόγους:

  1. Η επεξεργασία της παραλλαγής γίνεται πολύ πιο αργά και εάν υπάρχουν πολλές τέτοιες μεταβλητές, η επεξεργασία πληροφοριών μπορεί να επιβραδυνθεί σημαντικά σε αδύναμους υπολογιστές. Φαίνεται ότι αυτά τα δευτερόλεπτα θα αποφασίσουν; Αλλά αν πρέπει να γράψετε μεγάλο αριθμό γραμμών κώδικα και, στη συνέχεια, να τον εκτελέσετε σε αδύναμους υπολογιστές (που εξακολουθούν να πωλούνται, δεδομένου ότι οι σύγχρονες σουίτες γραφείου απαιτούν πολλή μνήμη RAM), μπορείτε να σταματήσετε εντελώς τη δουλειά. Υπάρχουν περιπτώσεις που η κακή σύλληψη γραφής μακροεντολών οδήγησε στο πάγωμα των έξυπνων βιβλίων που έχουν μικρή ποσότητα μνήμης RAM και δεν είναι σχεδιασμένα για να εκτελούν πολύπλοκες εργασίες. 
  2. Επιτρέπονται λανθασμένα τυπώματα σε ονόματα, τα οποία μπορούν να αποφευχθούν χρησιμοποιώντας τη δήλωση Option Explicit, η οποία σας επιτρέπει να βρείτε μια μη δηλωμένη μεταβλητή, εάν βρεθεί. Αυτός είναι ένας εύκολος τρόπος ανίχνευσης σφαλμάτων, καθώς το παραμικρό τυπογραφικό λάθος κάνει τον διερμηνέα να μην μπορεί να αναγνωρίσει τη μεταβλητή. Και αν ενεργοποιήσετε τη λειτουργία δήλωσης μεταβλητής, ο διερμηνέας απλώς δεν θα σας επιτρέψει να εκτελέσετε τη μακροεντολή εάν βρεθούν δοχεία δεδομένων που δεν είχαν δηλωθεί στην αρχή της ενότητας.
  3. Αποφύγετε σφάλματα που προκαλούνται από τιμές μεταβλητών που δεν ταιριάζουν με τον τύπο δεδομένων. Κανονικά, η εκχώρηση μιας τιμής κειμένου σε μια ακέραια μεταβλητή θα προκαλέσει σφάλμα. Ναι, αφενός, εκχωρείται ένας γενικός τύπος χωρίς δήλωση, αλλά εάν δηλωθούν εκ των προτέρων, τότε μπορούν να αποφευχθούν τυχαία σφάλματα.

Επομένως, παρ' όλα αυτά, συνιστάται ιδιαίτερα η δήλωση όλων των μεταβλητών σε μακροεντολές Excel.

Υπάρχει ένα ακόμη πράγμα που πρέπει να έχετε κατά νου όταν δηλώνετε μεταβλητές. Είναι δυνατό να μην εκχωρήσετε καμία τιμή σε μια μεταβλητή κατά τη δήλωση, αλλά σε αυτήν την περίπτωση αποκτά μια προεπιλεγμένη τιμή. Για παράδειγμα:

  1. Οι γραμμές γίνονται κενές.
  2. Οι αριθμοί παίρνουν την τιμή 0.
  3. Οι μεταβλητές τύπου Boolean θεωρούνται αρχικά ψευδείς.
  4. Η προεπιλεγμένη ημερομηνία είναι η 30η Δεκεμβρίου 1899.

Για παράδειγμα, δεν χρειάζεται να εκχωρήσετε την τιμή 0 σε μια ακέραια μεταβλητή εάν δεν είχε καθοριστεί προηγουμένως τιμή. Περιέχει ήδη αυτόν τον αριθμό.

Επιλογή Ρητή δήλωση

Αυτή η δήλωση σάς επιτρέπει να δηλώσετε όλες τις μεταβλητές που χρησιμοποιούνται στον κώδικα VBA και να προσδιορίσετε την παρουσία τυχόν μη δηλωμένων κοντέινερ πριν από την εκτέλεση του κώδικα. Για να χρησιμοποιήσετε αυτήν τη δυνατότητα, απλώς γράψτε μια γραμμή κώδικα Option Explicit στην κορυφή του κώδικα μακροεντολής.

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

  1. Μεταβείτε στο περιβάλλον ανάπτυξης κατά μήκος της διαδρομής – Εργαλεία > Επιλογές.
  2. Στο παράθυρο που ανοίγει μετά από αυτό, ανοίξτε την καρτέλα Επεξεργαστής.
  3. Και τέλος, επιλέξτε το πλαίσιο δίπλα στο στοιχείο Απαιτείται δήλωση μεταβλητής.

Μετά την ολοκλήρωση αυτών των βημάτων, κάντε κλικ στο κουμπί "OK". 

Αυτό ήταν, τώρα κατά τη σύνταξη κάθε νέας μακροεντολής, αυτή η γραμμή θα εισαχθεί αυτόματα στην κορυφή του κώδικα.

Εύρος Σταθερών και Μεταβλητών

Κάθε μεταβλητή ή σταθερά έχει μόνο περιορισμένο εύρος. Εξαρτάται που το δηλώνεις.

Ας υποθέσουμε ότι έχουμε μια συνάρτηση Συνολικό κόστος(), και χρησιμοποιεί τη μεταβλητή sVAT_Rate. Ανάλογα με τη θέση στη μονάδα, θα έχει διαφορετικό εύρος:

Επιλογή ρητή

Dim sVAT_Rate As Single

Συνάρτηση Total_Cost() Ως Διπλό

.

.

.

Τέλος Λειτουργία

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

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

Επιλογή ρητή

Συνάρτηση Total_Cost() Ως Διπλό

Dim sVAT_Rate As Single

   .

   .

   .

Τέλος Λειτουργία

Σε αυτήν την περίπτωση, η μεταβλητή δηλώνεται μέσα στη διαδικασία και ο διερμηνέας θα κάνει ένα σφάλμα εάν χρησιμοποιηθεί σε άλλη διαδικασία.

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

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

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

Επιλογή ρητή

Δημόσιο sVAT_Rate As Single

Public Const iMax_Count = 5000

Σε αυτό το παράδειγμα, μπορείτε να δείτε πώς χρησιμοποιείται η λέξη-κλειδί Public για να δηλώσετε μια μεταβλητή και τι πρέπει να γράψετε στο πρόγραμμα επεξεργασίας της Visual Basic για να δηλώσετε μια δημόσια σταθερά. Το πεδίο εφαρμογής αυτών των δοχείων τιμών ισχύει για όλες τις ενότητες.
Επιλογή ρητή

Ιδιωτικό sVAT_Rate As Single

Ιδιωτική Const iMax_Count = 5000

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

Γιατί χρειάζονται σταθερές και μεταβλητές

Η χρήση σταθερών και μεταβλητών σας επιτρέπει να αυξήσετε τον βαθμό κατανοητότητας του κώδικα. Και αν γενικά οι αρχάριοι δεν έχουν ερωτήσεις σχετικά με το γιατί χρειάζονται οι μεταβλητές, τότε υπάρχουν πολλές ασάφειες σχετικά με την ανάγκη για σταθερές. Και αυτή η ερώτηση φαίνεται, εκ πρώτης όψεως, αρκετά λογική. Μετά από όλα, μπορείτε να δηλώσετε μια μεταβλητή μία φορά και να μην την αλλάξετε ποτέ ξανά.

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

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

Ή, εάν υπάρχει μια σταθερά με ένα όνομα και η μεταβλητή έχει διαφορετικό, αλλά παρόμοιο όνομα. Ο προγραμματιστής μπορεί απλά να τα μπερδέψει. Για παράδειγμα, μια μεταβλητή που δεν χρειάζεται να αλλάξει ονομάζεται Variable11 και μια άλλη που μπορεί να επεξεργαστεί ονομάζεται Variable1. Ένα άτομο μπορεί αυτόματα, όταν γράφει κώδικα, να παραλείψει κατά λάθος μια επιπλέον μονάδα και να μην το παρατηρήσει. Ως αποτέλεσμα, το δοχείο για τις τιμές θα αλλάξει, το οποίο δεν πρέπει να αγγίξετε.

Ή ο ίδιος ο προγραμματιστής μπορεί να ξεχάσει ποιες μεταβλητές μπορεί να αγγίξει και ποιες όχι. Αυτό συμβαίνει συχνά όταν ο κώδικας γράφεται για αρκετές εβδομάδες και το μέγεθός του γίνεται μεγάλο. Κατά τη διάρκεια αυτής της περιόδου, είναι πολύ εύκολο να ξεχάσουμε ακόμη και τι σημαίνει αυτή ή εκείνη η μεταβλητή.

Ναι, μπορείτε να κάνετε σχόλια σε αυτήν την περίπτωση, αλλά δεν είναι πιο εύκολο να προσδιορίσετε τη λέξη Const;

συμπεράσματα

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

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

Αφήστε μια απάντηση