Comprensió de variables i constants a les macros d'Excel

En aquest article, aprendràs quines constants i variables hi ha a les macros, on es poden utilitzar i quina és la diferència principal entre els diferents tipus de dades. També es revelarà per què es necessiten constants, si només podeu escriure una variable i no canviar-la mai.

Com altres llenguatges de programació, les dades es poden emmagatzemar en variables o constants (ambdues sovint s'anomenen contenidors de dades). Aquesta és la principal diferència entre aquests conceptes. El primer pot canviar en funció del que succeeixi al programa. Al seu torn, les constants s'estableixen una vegada i no canvien el seu valor.

Les constants poden ser útils si necessiteu utilitzar el mateix valor gran diverses vegades. En lloc de copiar el número, simplement podeu escriure el nom de la constant. Per exemple, podeu utilitzar la constant "Pi" per emmagatzemar Pi, que és un valor constant. És molt gran, i cada vegada és bastant difícil escriure-lo o cercar-lo i copiar-lo. Per tant, n'hi ha prou amb escriure dos caràcters i l'entorn utilitza automàticament el número desitjat.

L'usuari d'Excel ha de declarar variables si ha de canviar el valor emmagatzemat en elles de tant en tant. Per exemple, podeu establir una variable anomenada sVAT_Rate, que emmagatzemarà la taxa d'IVA actual del producte. Si canvia, podeu corregir-lo ràpidament. Això és especialment útil per a aquells que fan negocis als Estats Units, on alguns béns poden no estar subjectes a l'IVA en absolut (i aquest impost també difereix d'un estat a un altre).

Tipus de dades

Cada contenidor de dades pot ser de diversos tipus. Aquí hi ha una taula que descriu els tipus estàndard d'informació processada. N'hi ha molts, i a un principiant li pot semblar inicialment que es repeteixen. Però aquest és un sentiment il·lusori. Continueu llegint per saber per què és tan important especificar el tipus de dades correcte.

No es recomana utilitzar un tipus de dades que ocupi més espai a la memòria per a números petits. Per exemple, per al número 1, n'hi ha prou amb utilitzar el tipus Byte. Això tindrà un efecte positiu en el rendiment del mòdul executable, especialment en ordinadors febles. Però aquí és important no anar massa lluny. Si utilitzeu un tipus de dades massa compacte, és possible que no hi cabi un valor sobredimensionat.

Declaració de constants i variables

Es desaconsella molt utilitzar un contenidor de dades sense declarar-lo abans. Aleshores poden sorgir una sèrie de problemes, per evitar que cal escriure unes petites línies de codi amb enumeració de variables o constants.

Per declarar una variable, s'utilitza la instrucció Dim. Per exemple, així:

Atenuar el nom_variable com a nombre enter

Nom_variable és el nom de la variable. A continuació, s'escriu l'operador As, que indica el tipus de dades. En lloc de les cadenes "Variable_Name" i "Integer", podeu inserir el vostre propi nom i tipus de dades.

També es poden declarar constants, però primer cal especificar-ne el valor. Una de les opcions és:

Const iMaxCount = 5000

Per ser justos, en alguns casos es pot prescindir de declarar una variable, però en aquest cas se'ls assignarà automàticament el tipus Variant. Tanmateix, això no es recomana pels motius següents:

  1. La variant es processa molt més lentament, i si hi ha moltes d'aquestes variables, el processament de la informació es pot alentir significativament en ordinadors febles. Sembla que aquests segons decidiran? Però si heu d'escriure un gran nombre de línies de codi i, a continuació, executar-lo en ordinadors febles (que encara es venen, atès que les suites d'oficina modernes requereixen molta memòria RAM), podeu aturar completament el treball. Hi ha casos en què l'escriptura mal concebuda de macros va provocar la congelació de llibres intel·ligents que tenen una petita quantitat de memòria RAM i no estan dissenyats per realitzar tasques complexes. 
  2. Es permeten errors d'impressió en els noms, cosa que es pot evitar mitjançant la instrucció Option Explicit, que us permet trobar una variable no declarada, si es troba una. Aquesta és una manera fàcil de detectar errors, ja que la més mínima errada fa que l'intèrpret no pugui identificar la variable. I si activeu el mode de declaració de variables, l'intèrpret simplement no us permetrà executar la macro si es troben contenidors de dades que no es van declarar al principi del mòdul.
  3. Eviteu errors causats per valors variables que no coincideixen amb el tipus de dades. Normalment, assignar un valor de text a una variable entera generarà un error. Sí, d'una banda, s'assigna un tipus genèric sense declaració, però si es declaren per endavant, es poden evitar errors aleatoris.

Per tant, malgrat tot, és molt recomanable declarar totes les variables en macros d'Excel.

Hi ha una cosa més a tenir en compte a l'hora de declarar variables. És possible no assignar cap valor a una variable en declarar-la, però en aquest cas adquireix un valor per defecte. Per exemple:

  1. Les línies es deixen buides.
  2. Els nombres prenen el valor 0.
  3. Les variables de tipus booleà es consideren inicialment falses.
  4. La data per defecte és el 30 de desembre de 1899.

Per exemple, no cal que assigneu el valor 0 a una variable entera si prèviament no s'ha especificat cap valor. Ella ja conté aquest número.

Opció Declaració explícita

Aquesta declaració us permet declarar totes les variables que s'utilitzen al codi VBA i determinar la presència de contenidors no declarats abans d'executar el codi. Per utilitzar aquesta funció, simplement escriviu una línia de codi explícit d'opció a la part superior del codi macro.

Si necessiteu incloure aquesta declaració al vostre codi cada vegada, podeu fer-ho mitjançant una configuració especial a l'editor VBA. Per habilitar aquesta opció, heu de:

  1. Aneu a l'entorn de desenvolupament al llarg del camí - Eines > Opcions.
  2. A la finestra que s'obre després d'això, obriu la pestanya Editor.
  3. I, finalment, marqueu la casella que hi ha al costat de l'element Requerir declaració de variables.

Un cop finalitzats aquests passos, feu clic al botó "D'acord". 

Això és tot, ara en escriure cada macro nova, aquesta línia s'inserirà a la part superior del codi automàticament.

Abast de constants i variables

Cada variable o constant només té un abast limitat. Depèn d'on ho declari.

Suposem que tenim una funció Cost total(), i utilitza la variable sVAT_Rate. Segons la posició del mòdul, tindrà un abast diferent:

Opció Explícita

Redueix sVAT_Rate com a únic

Funció Total_Cost() com a doble

.

.

.

End Function

Si una variable es declara a la part superior d'un mòdul, es propaga per tot aquest mòdul. És a dir, es pot llegir per tots els procediments.

A més, si un dels procediments va canviar el valor de la variable, el següent també llegirà aquest valor corregit. Però en altres mòduls aquesta variable encara no es llegirà.

Opció Explícita

Funció Total_Cost() com a doble

Redueix sVAT_Rate com a únic

   .

   .

   .

End Function

En aquest cas, la variable es declara dins del procediment, i l'intèrpret llançarà un error si s'utilitza en un altre procediment.

Si voleu que la variable sigui llegida per altres mòduls, heu d'utilitzar la paraula clau Public en lloc de la paraula clau Dim. De la mateixa manera, podeu limitar l'abast d'una variable només al mòdul actual mitjançant la instrucció Public, que s'escriu en lloc de la paraula Dim.

Podeu establir l'abast de les constants d'una manera similar, però la paraula clau aquí s'escriu juntament amb l'operador Const.

Aquí teniu una taula amb un bon exemple de com funciona amb constants i variables.

Opció Explícita

sVAT_Tarifa pública com a únic

Public Const iMax_Count = 5000

En aquest exemple, podeu veure com s'utilitza la paraula clau Public per declarar una variable i què heu d'escriure a l'editor de Visual Basic per declarar una constant pública. L'abast d'aquests contenidors de valor s'aplica a tots els mòduls.
Opció Explícita

Privat sVAT_Rate As Single

Private Const iMax_Count = 5000

Aquí, les variables i constants es declaren mitjançant la paraula clau Privada. Això vol dir que només es poden veure dins del mòdul actual i els procediments d'altres mòduls no els poden utilitzar.

Per què calen constants i variables

L'ús de constants i variables permet augmentar el grau de comprensió del codi. I si els principiants en general no tenen preguntes sobre per què es necessiten variables, hi ha moltes ambigüitats pel que fa a la necessitat de constants. I aquesta pregunta sembla, a primera vista, força lògica. Després de tot, podeu declarar una variable una vegada i no canviar-la mai més.

La resposta resulta estar en algun lloc del mateix pla que pel que fa a l'ús de tipus de dades que ocupen un gran espai a la memòria. Si estem tractant amb un gran nombre de variables, podem canviar accidentalment un contenidor existent. Si l'usuari prescriu que un determinat valor no canviarà mai, l'entorn ho controlarà automàticament.

Això és especialment important quan la macro està escrita per diversos programadors. Un pot saber que alguna variable no hauria de canviar. I l'altre no. Si especifiqueu l'operador Const, un altre desenvolupador sabrà que aquest valor no canvia.

O bé, si hi ha una constant amb un nom i la variable té un nom diferent, però similar. El desenvolupador simplement els pot confondre. Per exemple, una variable que no cal canviar s'anomena Variable11, i una altra que es pot editar s'anomena Variable1. Una persona pot automàticament, quan escriu codi, saltar-se accidentalment una unitat addicional i no adonar-se'n. Com a resultat, es canviarà el contenidor dels valors, que no s'ha de tocar.

O el mateix desenvolupador pot oblidar quines variables pot tocar i quines no. Això passa sovint quan el codi s'escriu durant diverses setmanes i la seva mida es fa gran. Durant aquest temps, és molt fàcil oblidar fins i tot el que significa aquesta o aquella variable.

Sí, es pot fer amb comentaris en aquesta situació, però no és més fàcil especificar la paraula Const?

Conclusions

Les variables són un component essencial de la programació macro, que permeten realitzar operacions complexes, des de càlculs fins a informar l'usuari sobre determinats esdeveniments o especificar valors específics a les cel·les d'un full de càlcul.

S'han d'utilitzar constants si el desenvolupador està segur que el contingut d'aquests contenidors no canviarà en el futur. Es recomana no utilitzar variables, ja que és possible cometre un error accidentalment.

Deixa un comentari