vba variables option explicit vba
Aquest tutorial explica com declarar i utilitzar variables VBA. Apreneu també sobre les opcions explícites, abast variable, variables estàtiques i constants:
En un ordinador, tots els valors de les dades s’emmagatzemen en una memòria o emmagatzematge de l’ordinador. Per accedir a aquests valors, heu d’especificar un nom associat a aquest valor, que s’anomena variable en llenguatges de programació.
En aquest tutorial, aprendrem a declarar i definir una variable juntament amb els diversos tipus d’àmbits variables i també explorarem les variables estàtiques i constants en detall.
=> Consulteu aquí per veure els tutorials de formació A-Z de VBA
Què aprendreu:
- Variables VBA
- Conclusió
Variables VBA
variables són com espais reservats per als valors de l'emmagatzematge de l'ordinador. Les variables poden contenir diferents varietats de valors i aquests valors poden canviar durant l'execució del codi.
Cada variable tindrà un nom que s'utilitza per accedir al valor. VBA té certes restriccions respecte a la selecció de noms.
A continuació es mostra la llista de restriccions:
- El nom de la variable no pot tenir més de 255 caràcters.
- Un nom de variable no pot començar amb un número.
- No podeu començar amb caràcters especials com ara!, @, &,., # O no podeu tenir espais.
- Les paraules clau no es consideren un nom de variable.
El compilador generarà un error si infringiu aquestes restriccions
Exemple:
Noms de variables vàlids: varName, Result12, First_Number
Noms de variables no vàlids: 123abc, #number, Sub, abc.123
Primer número (no es permet l'espai entre les paraules)
Declaració d'una variable VBA
Hem d'utilitzar el fitxer Cap paraula clau per declarar una variable. Hi ha 2 seccions mentre es declara una variable. 1cés el nom de la variable i 2ndés el tipus de valor que s'ha d'emmagatzemar a la variable que s'anomena Tipus de dades.
Sintaxi: dim VariableName com DataType
Exemple:
- Atenueu MyAge com a enter
- Atenua el meu percentatge com a doble
- Enumereix el nom complet com a cadena
Aquí, expliqueu explícitament al compilador que la meva variable només hauria d’emmagatzemar aquest tipus de dades i VBA s’assegurarà d’iniciar un error de desajustament de tipus de compilador quan un valor definit per a la variable no coincideixi amb el tipus de dades.
Exemple:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Però si no esteu segur del tipus de dades de la variable, VBA us permet ometre el tipus de dades. La sintaxi esmentada a continuació també és vàlida.
Dim VariableName
Quan no declareu el tipus de dades de la variable, VBA el tracta com un tipus de dades variant i està obligat a acceptar qualsevol tipus de sencer de dades com un enter, una cadena, un llibre, etc. Al mateix programa, el les variables variants també poden acceptar el valor de la cadena, el valor enter i qualsevol altre tipus.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Com que Total_Marks és una variable variant, a diferència del codi anterior, el compilador no generarà cap error com es mostra a continuació.
Nota: Recordeu que VBA us permet utilitzar una variable sense declarar-la realment.
El següent exemple de codi també proporciona un resultat adequat. En aquest cas, VBA tracta automàticament la variable com un tipus de dades variant. Això s’anomena Declaració implícita.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Avantatges de declarar una variable
- Fàcil de depurar: És una bona pràctica declarar una variable abans d’utilitzar-la. Ens proporciona una comprensió prèvia dels errors com el tipus de desajustament i els errors tipogràfics, reduint així el risc de desviar-se de la lògica del programa.
- Millor llegibilitat: Com a equip, hi haurà molta gent mirant el codi i declarar una variable ajudarà tothom amb el tipus de valors que s’espera que prengui la variable i també ajudarà els usuaris a introduir els valors d’entrada adequats mentre s’executa el programa.
- Espai d'emmagatzematge: Si no declareu una variable, VBA la tracta com un tipus de dades variant que ocupa l'espai més gran de la memòria (de 16 a 22 bytes) en comparació amb altres tipus de dades. Per exemple, si utilitzeu una variable de tipus Byte que només necessita 1 byte i si no la declareu, VBA acabarà reservant un espai de 16 bytes i, per tant, malgastarà la memòria.
Opció explícita
Per assegurar-nos que totes les variables es declaren explícitament, hem d’utilitzar la declaració Option Explicit abans d’utilitzar-les. S’ha d’utilitzar al principi de qualsevol procediment d’aquest mòdul.
Vegem un exemple que no utilitza la declaració explícita d’opció.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Executeu el codi (premeu F5 o el botó d'execució a la barra d'eines) i acabareu obtenint un quadre de missatge en blanc.
Tot i que heu declarat la variable, heu acabat en un quadre de resultats en blanc a causa de l'error tipogràfic a Msgbox Firt_Name. L’opció explícita ens ajudarà a eliminar aquests errors.
Refem el mateix codi amb Option Explicit. Introduïu Opció explícita abans que comenci el procediment.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Ara bé, si executeu el codi (premeu F5 o el botó Executa a la barra d'eines) i acabareu obtenint un error del compilador.
Podeu fer afegir VBA Opció explícita automàticament.
A l'editor VB, Aneu a Eines -> Opcions -> Seleccioneu 'Requereix declaració de variable'.
Ara Opció explícita s'afegirà automàticament cada vegada que inseriu un mòdul nou o enregistreu una macro nova.
Nota: L’opció explícita no s’afegirà al codi VBA existent. Cal afegir-lo manualment si cal.
Assignació d'un valor a una variable
Els valors es poden assignar a variables fent servir el símbol igual (=). Si us referiu a una cel·la d'Excel, haureu d'utilitzar les funcions Range.
Consulteu el codi següent.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
A l'exemple anterior, var1 és una variable que emmagatzema el valor 10 directament mitjançant (=) i la funció Range ajudarà a introduir el valor var1 que és 10 a les cel·les d'Excel de C1 a C14.
Abast d'una variable
Totes les variables d’un programa tindran un abast definit. Aquest abast indica al programa les àrees en què la variable és visible, és a dir, el mòdul o la funció que pot o no utilitzar la variable.
VBA té 3 tipus d'abast definits per a la variable.
- Abast a nivell de procediment
- Àmbit de mòdul privat
- Àmbit públic a nivell de mòdul
Abast a nivell de procediment
Les variables definides en un procediment, és a dir, a la Sub o Funció, només les podran utilitzar. Aquests no són visibles per cap altre procediment.
Exemple:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Quan executeu el codi anterior, per al primer Sub el msgbox retornarà un resultat adequat, però per al segon Sub, es produirà un error del compilador. Com que la variable vèrtex només és visible per a l'1csub i no per al 2nd. Com hem utilitzat Option Explicit, obtindrem un error del compilador per no definir variables a la 2ndsub.


Abast de nivell de mòdul privat
Aquestes variables estan disponibles per a tots els procediments del mòdul definit. Per defecte, les variables declarades amb el fitxer Cap tenen àmbit privat. Però es recomana afegir privat per a una millor llegibilitat.
Considerem el mateix exemple, però declararem la variable fora del procediment.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Després de l'execució, veureu que ambdós procediments retornaran els resultats adequats sense cap error. Per a una comprensió clara, hem afegit el títol adequat al msgbox.
Àmbit de nivell de mòdul públic
Aquest tipus de variables són visibles a tots els procediments i a tots els mòduls d’un projecte. Inseriu 2 mòduls. (Feu clic amb el botó dret sobre un full i Inseriu -> mòduls).
Introduïu el codi següent en un mòdul.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Introduïu el codi següent al segon mòdul.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Els resultats es mostren a continuació
Considerem un exemple pràctic i entenem millor tot l’abast.
S'adjunta el fitxer de referència del codi anterior.
Variable estàtica
Normalment, el valor de la variable només es conserva des de la crida al procediment fins al final del procediment. No conserva el valor un cop finalitza l'execució del procediment.
Per exemple , al codi anterior, el valor de firstNo i secondNo s'elimina tan bon punt finalitza el procediment, la propera vegada que executeu el codi, firstNo i secondNo obtindran el mateix valor que el definit al codi.
Però les variables estàtiques són aquelles que conservaran el valor de la variable fins i tot després de l'execució. Una variable estàtica només es permet dins d'un sub o d'una funció.
Penseu en el següent codi amb una variable no estàtica.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Cada vegada que premeu F5, només obtindreu 1 com a resultat.
Ara declarem la variable com estàtica.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Cada vegada que executeu el codi (F5), el resultat tindrà un valor augmentat per al recompte, com ara 1,2,3, etc., ja que la variable estàtica ha conservat el seu valor.
Nota: La variable estàtica conservarà el valor fins que premeu el botó Restableix de la barra d'eines o tanqueu el llibre.
Variable constant
Com el seu nom indica, el valor d’aquestes variables no es pot canviar durant l’execució del programa. Un cop declarada una constant, no es pot modificar ni assignar un valor nou.
La declaració d'una constant es pot fer dins d'un procediment o a nivell de mòdul (sobretot tots els procediments).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Si intenteu canviar el valor constant, es generarà un error de compilació.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Preguntes freqüents
P # 1) Com establir una variable pública a VBA?
Resposta: Les variables públiques es declaren abans de començar un procediment. La paraula clau pública s’ha d’utilitzar mentre es declara una variable.
Públic_marques totals com a enter
Q # 2) Quin tipus de variables no es poden declarar fora del procediment?
Resposta: Les variables estàtiques no es poden declarar fora del procediment a VBA i obtindreu un error de compilació.
P # 3) Com declarar una variable a VBA?
Resposta: La paraula clau Dim s'utilitza per declarar una variable. Dim significa Dimension.
Dim variable nom com a tipus de dades
Q # 4) Com assignar un valor variable a una cel·la de VBA?
Resposta: Podeu utilitzar la funció Range.
var1 = 10
Interval ('C1: C14'). Valor = var1
P # 5) Què són les variables a VBA?
Resposta: Les variables són com espais reservats per als valors de l’emmagatzematge de l’ordinador. Les variables poden contenir diferents varietats de valors i aquests valors poden canviar durant l'execució del codi. Totes les variables han de tenir un nom; mitjançant el nom de la variable, l'ordinador obtindrà el valor assignat per a aquesta variable.
P # 6) Heu de declarar una variable a VBA?
Resposta: La declaració és opcional a VBA. Si no declareu una variable i l’utilitzeu directament al procediment, s’anomenarà Declaració implícita. Per evitar errors al codi i per a una millor llegibilitat, es recomana declarar explícitament una variable.
P # 7) Com puc declarar diverses variables a VBA?
Resposta: Podeu declarar diverses variables en una declaració de declaració. Només cal especificar el nom de la variable separada per comes en una clàusula As.
plantilla de matriu de traçabilitat de requisits amb exemple
Dim FirstNo, SecondNo com a enter
També podeu especificar diferents variables en una declaració de declaració. Cada variable prendrà el tipus de dades especificat a la clàusula As després de la part del nom de la variable.
Dim a, b Com a simple, c, d Com a doble, e Com a enter, f Com a cadena
Q # 8) Quan no hi hauria cap diferència entre el dim i el privat a VBA?
Resposta: Si declareu un àmbit de mòdul privat, no hi ha diferència entre declarar una variable com a fosca o privada. Per defecte, les variables declarades amb el fitxer Cap tenen àmbit privat. Però es recomana afegir privat per a una millor llegibilitat.
P # 9) Què és una variable de nivell de mòdul?
Resposta: Les variables de nivell de mòdul poden ser privades o públiques. Les variables privades estan disponibles per a tots els procediments d’aquest mòdul i no són visibles per a cap altre mòdul. Les variables públiques són visibles per a tots els procediments de tots els mòduls d’un projecte.
Conclusió
Una variable és crucial en qualsevol llenguatge de programació. En aquest tutorial hem vist què són les variables, com declarar-les i utilitzar-les al programa. També vam explorar el mètode Option Explicit, que obliga a la implementació de la declaració explícita.
Es van discutir diferents tipus d’abast de variables que ajuden els usuaris a determinar quines parts del codi es pot utilitzar. Hem après l’ús de variables estàtiques que ajuden a conservar el valor de la variable i les variables constants que ajuden a mantenir el valor de la variable sense canvis.
=> Visiteu aquí per aprendre VBA des de zero
Lectura recomanada
- Tutorial Excel VBA: introducció a VBA Excel
- Matriu Excel VBA i mètodes de matriu amb exemples
- Tipus de dades VBA: tipus de dades numèriques i no numèriques a VBA
- Variables de Python
- Variables en C ++
- Variables de Java i els seus tipus amb exemples
- C # Tipus de dades i variables amb exemples
- Variables VBScript: Com declarar i utilitzar variables - VBScript Dim