Contidos
Neste artigo, aprenderƔs cales son as constantes e variables nas macros, onde se poden usar e cal Ʃ a principal diferenza entre os diferentes tipos de datos. TamƩn se revelarƔ por que se necesitan constantes, se pode simplemente escribir unha variable e nunca cambiala.
Do mesmo xeito que outras linguaxes de programaciĆ³n, os datos pĆ³dense almacenar en variables ou constantes (ambas as cales tamĆ©n se adoitan denominar contedores de datos). Esta Ć© a principal diferenza entre estes conceptos. O primeiro pode cambiar dependendo do que suceda no programa. Pola sĆŗa banda, as constantes establĆ©cense unha vez e non cambian o seu valor.
As constantes poden ser Ćŗtiles se necesitas usar o mesmo valor grande varias veces. En lugar de copiar o nĆŗmero, pode simplemente escribir o nome da constante. Por exemplo, pode usar a constante "Pi" para almacenar Pi, que Ć© un valor constante. Ć moi grande, e cada vez Ć© bastante difĆcil escribilo ou buscalo e copialo. E asĆ, abonda con escribir dous caracteres e o ambiente usa automaticamente o nĆŗmero desexado.
O usuario de Excel ten que declarar variables se precisa cambiar o valor almacenado nelas de cando en vez. Por exemplo, pode establecer unha variable chamada sVAT_Rate, que almacenarĆ” a taxa de IVE actual para o produto. Se cambia, pode corrixilo rapidamente. Isto Ć© especialmente Ćŗtil para aqueles que fan negocios nos Estados Unidos, onde algĆŗns bens poden non estar suxeitos ao IVE en absoluto (e este imposto tamĆ©n difire dun estado a outro).
Tipos de datos
Cada contedor de datos pode ser de varios tipos. AquĆ tes unha tĆ”boa que describe os tipos estĆ”ndar de informaciĆ³n procesada. Hai moitos deles, e a un principiante pode parecerlle inicialmente que se repiten. Pero este Ć© un sentimento ilusorio. ContinĆŗa lendo para saber por que Ć© tan importante especificar o tipo de datos correcto.
Non se recomenda utilizar un tipo de datos que ocupe mĆ”is espazo na memoria para nĆŗmeros pequenos. Por exemplo, para o nĆŗmero 1, Ć© suficiente usar o tipo Byte. Isto terĆ” un efecto positivo no rendemento do mĆ³dulo executable, especialmente en ordenadores dĆ©biles. Pero aquĆ Ć© importante non ir demasiado lonxe. Se usa un tipo de datos demasiado compacto, Ć© posible que non caiba nel un valor de gran tamaƱo.
DeclaraciĆ³n de constantes e variables
DesaconsĆ©llase encarecidamente usar un contedor de datos sen antes declaralo. EntĆ³n poden xurdir unha serie de problemas, para evitar o cal Ć© necesario escribir unhas pequenas liƱas de cĆ³digo con enumeraciĆ³n de variables ou constantes.
Para declarar unha variable, utilĆzase a instruciĆ³n Dim. Por exemplo, asĆ:
Dim Variable_Name como nĆŗmero enteiro
Variable_Name Ć© o nome da variable. A continuaciĆ³n, escrĆbese o operador As, indicando o tipo de datos. En lugar das cadeas "Variable_Name" e "Integer", pode inserir o seu propio nome e tipo de datos.
TamĆ©n se poden declarar constantes, pero primeiro debes especificar o seu valor. Unha das opciĆ³ns Ć©:
Const iMaxCount = 5000
Para ser xustos, nalgĆŗns casos pĆ³dese prescindir de declarar unha variable, pero neste caso asignarĆ”selles automaticamente o tipo Variante. Non obstante, isto non se recomenda polos seguintes motivos:
- A variante procĆ©dese moito mĆ”is lentamente e, se hai moitas destas variables, o procesamento da informaciĆ³n pĆ³dese ralentizar significativamente en ordenadores dĆ©biles. Parece que eses segundos decidirĆ”n? Pero se tes que escribir un gran nĆŗmero de liƱas de cĆ³digo e despois executalo en ordenadores dĆ©biles (que aĆnda se venden, dado que as suites ofimĆ”ticas modernas requiren moita memoria RAM), podes deter completamente o traballo. Hai casos nos que a escrita mal concebida de macros levou Ć” conxelaciĆ³n de libros intelixentes que teƱen unha pequena cantidade de RAM e non estĆ”n deseƱados para realizar tarefas complexas.
- PermĆtense erros de impresiĆ³n nos nomes, o que se pode evitar mediante a instruciĆ³n Option Explicit, que lle permite atopar unha variable non declarada, se se atopa. Esta Ć© unha forma sinxela de detectar erros, xa que o mĆ”is mĆnimo erro de dixitaciĆ³n fai que o intĆ©rprete non poida identificar a variable. E se activas o modo de declaraciĆ³n de variables, o intĆ©rprete simplemente non che permitirĆ” executar a macro se se atopan contedores de datos que non foron declarados ao principio do mĆ³dulo.
- Evite erros causados āāpor valores variables que non coinciden co tipo de datos. Normalmente, asignar un valor de texto a unha variable enteira xerarĆ” un erro. Si, por unha banda, asĆgnase un tipo xenĆ©rico sen declaraciĆ³n, pero se se declaran previamente, pĆ³dense evitar erros aleatorios.
Polo tanto, a pesar de todo, Ć© moi recomendable declarar todas as variables nas macros de Excel.
Hai unha cousa mĆ”is a ter en conta ao declarar variables. Ć posible non asignar ningĆŗn valor a unha variable ao declarala, pero neste caso adquire un valor por defecto. Por exemplo:
- As liƱas quedan baleiras.
- Os nĆŗmeros toman o valor 0.
- As variables de tipo booleano considƩranse inicialmente falsas.
- A data predeterminada Ć© o 30 de decembro de 1899.
Por exemplo, non precisa asignar o valor 0 a unha variable enteira se non se especificou previamente ningĆŗn valor. Ela xa contĆ©n este nĆŗmero.
OpciĆ³n DeclaraciĆ³n explĆcita
Esta declaraciĆ³n permĆtelle declarar todas as variables que se usan no cĆ³digo VBA e determinar a presenza de contedores non declarados antes de executar o cĆ³digo. Para usar esta funciĆ³n, simplemente escriba unha liƱa de cĆ³digo explĆcito de opciĆ³n na parte superior do cĆ³digo macro.
Se precisas incluĆr esta declaraciĆ³n no teu cĆ³digo cada vez, podes facelo usando unha configuraciĆ³n especial no editor VBA. Para activar esta opciĆ³n, debes:
- Vaia ao contorno de desenvolvemento ao longo do camiƱo - Ferramentas > OpciĆ³ns.
- Na xanela que se abre despois, abra a pestana Editor.
- E, finalmente, marque a caixa xunto ao elemento Esixir declaraciĆ³n de variables.
Despois de completar estes pasos, faga clic no botĆ³n "Aceptar".
Isto Ć© todo, agora ao escribir cada nova macro, esta liƱa inserirase na parte superior do cĆ³digo automaticamente.
Ćmbito de constantes e variables
Cada variable ou constante ten sĆ³ un alcance limitado. Depende de onde o declares.
SupoƱamos que temos unha funciĆ³n Custo_Total(), e usa a variable sVAT_Rate. Dependendo da posiciĆ³n no mĆ³dulo, terĆ” un Ć”mbito diferente:
OpciĆ³n ExplĆcita Dim sVAT_Rate As Single FunciĆ³n Total_Cost() As Double . . . End FunciĆ³n | Se unha variable se declara na parte superior dun mĆ³dulo, propĆ”gase por todo ese mĆ³dulo. Ć dicir, pĆ³dese ler por todos os procedementos. Ademais, se un dos procedementos cambiou o valor da variable, o seguinte tamĆ©n lerĆ” este valor corrixido. Pero noutros mĆ³dulos esta variable aĆnda non serĆ” lida. |
OpciĆ³n ExplĆcita FunciĆ³n Total_Cost() As Double Dim sVAT_Rate As Single . . . End FunciĆ³n | Neste caso, a variable declĆ”rase dentro do procedemento e o intĆ©rprete lanzarĆ” un erro se se usa noutro procedemento. |
Se queres que a variable sexa lida por outros mĆ³dulos, debes usar a palabra clave PĆŗblica en lugar da palabra clave Dim. Do mesmo xeito, pode limitar o alcance dunha variable sĆ³ ao mĆ³dulo actual mediante a instruciĆ³n Public, que se escribe en lugar da palabra Dim.
Pode establecer o alcance das constantes dun xeito similar, pero a palabra clave aquĆ estĆ” escrita xunto co operador Const.
AquĆ tes unha tĆ”boa cun bo exemplo de como funciona con constantes e variables.
OpciĆ³n ExplĆcita sVAT_Taxa pĆŗblica como Ćŗnico Public Const iMax_Count = 5000 | Neste exemplo, podes ver como se usa a palabra clave PĆŗblica para declarar unha variable e o que cĆ³mpre escribir no editor de Visual Basic para declarar unha constante pĆŗblica. O alcance destes contedores de valor aplĆcase a todos os mĆ³dulos. |
OpciĆ³n ExplĆcita Privado sVAT_Rate Como Ćŗnico Private Const iMax_Count = 5000 | AquĆ, as variables e as constantes declĆ”ranse usando a palabra clave Private. Isto significa que sĆ³ se poden ver dentro do mĆ³dulo actual e que os procedementos doutros mĆ³dulos non poden utilizalos. |
Por que se necesitan constantes e variables
O uso de constantes e variables permite aumentar o grao de comprensiĆ³n do cĆ³digo. E se os principiantes en xeral non teƱen preguntas sobre por que se necesitan variables, entĆ³n hai moitas ambigĆ¼idades sobre a necesidade de constantes. E esta pregunta parece, a primeira vista, bastante lĆ³xica. Despois de todo, pode declarar unha variable unha vez e nunca mĆ”is cambiala.
A resposta resulta estar nalgĆŗn lugar no mesmo plano que no que se refire ao uso de tipos de datos que ocupan un gran espazo na memoria. Se estamos a tratar cunha gran cantidade de variables, podemos cambiar accidentalmente un contedor existente. Se o usuario prescribe que un determinado valor nunca cambiarĆ”, entĆ³n o ambiente controlarao automaticamente.
Isto Ć© especialmente importante cando a macro estĆ” escrita por varios programadores. Un pode saber que algunha variable non debe cambiar. E o outro non. Se especificas o operador Const, outro desenvolvedor saberĆ” que este valor non cambia.
Ou, se hai unha constante cun nome, e a variable ten un nome diferente, pero semellante. O desenvolvedor pode simplemente confundilos. Por exemplo, unha variable que non Ć© necesario cambiar chĆ”mase Variable11 e outra que se pode editar chĆ”mase Variable1. Unha persoa pode automaticamente, ao escribir cĆ³digo, saltar accidentalmente unha unidade extra e non notalo. Como resultado, cambiarase o recipiente para os valores, que non se deben tocar.
Ou o propio desenvolvedor pode esquecer que variables pode tocar e cales non. Isto ocorre a miĆŗdo cando o cĆ³digo se escribe durante varias semanas e o seu tamaƱo faise grande. Durante este tempo, Ć© moi doado esquecer mesmo o que significa esta ou aquela variable.
Si, podes facer cos comentarios nesta situaciĆ³n, pero non Ć© mĆ”is doado especificar a palabra Const?
ConclusiĆ³ns
As variables son un compoƱente esencial da programaciĆ³n de macros, que permiten realizar operaciĆ³ns complexas, desde cĆ”lculos ata informar ao usuario sobre certos eventos ou especificar valores especĆficos nas celas dunha folla de cĆ”lculo.
Deben usarse constantes se o desenvolvedor sabe con certeza que o contido destes contedores non cambiarƔ no futuro. RecomƩndase non usar variables no seu lugar, xa que Ʃ posible cometer un erro accidentalmente.