MATRICES (Arrays)
Si bien las variables sólo nos sirven para almacenar un único valor, las matrices posibilitan el almacenamiento de muchos valores y operan casi exactamente de la mismo modo.
Vea unos ejemplos de declaraciones:
'Ejemplo: declaración de variablesDim var1 As String'Ejemplo: declaración unidimensional de matrizDim matriz1(4) As String'Ejemplo: declaración de matriz de 2 dimensionesDim matriz2(4, 3) As String'Ejemplo: declaración de matriz de 3 dimecionesDim matriz3(4, 3, 2) As String
La matriz de una dimensión:
'Ejemplo:declaración de matrix de 1 dimenciónDim matriz1(4) As String
Con esta declaración solo tenemos un número entre paréntesis, es decir que se trata de una matriz unidimensional. El número establece el tamaño de la matriz. matriz1(4) es una matriz donde las celdas se numeran de 0 a 4, que significa un array con 5 celdas:
'Asignando valores a 5 celdasmatriz1(0) = "valor de celda 0"matriz1(1) = "valor de celda 1"matriz1(2) = "valor de celda 2"matriz1(3) = "valor de celda 3"matriz1(4) = "valor de celda 4"
Importante: la primera celda de una matriz debe tener el valor 0.
Este es un ejemplo de como se puede elegir cualquier valor de la celda en función de otros valores, utilizando un bucle "do while" imprimimos los valores de la matriz, así mismo le damos color en función del valor del bucle, no es necesario saber por ahora, en las siguientes publicaciones se explicará sobre condicionales y bucles :
Sub AsignarValor()'Declarando matriz unidimencionalDim número(5) As String'Asignando valoresnúmero(0) = "valor( 0)"número(1) = "valor( 1)"número(2) = "valor( 2)"número(3) = "valor( 3)"número(4) = "valor( 4)"número(5) = "valor( 5)"'Declarando variable numDim num As IntegerDo While num < 6num = num + 1Cells(num, 1) = número(num - 1)Cells(num, 1).Interior.ColorIndex = numCells(num, 1).Font.ColorIndex = num + 1LoopEnd Sub
Se imprimirán los valores de la matriz en sentido de la flecha:
También se puede sustituir al bucle do while por un bucle for, para que de los valores en una ventana emergente.
'Opción 2 , antes borrar desde do while hasta loopFor i = 0 To 5MsgBox número(i)Next
Otro ejemplo, una matriz bidimensional:
'Declaración de matriz de 2 dimencionesDim número(3, 5) As String
'Asignando valores a 3 celdas de colornúmero(2, 3) = "Rojo"número(2, 4) = "Verde"número(2, 5) = "azul"
Para graficar la imagen anterior puedes utilizar esto, en ciclos mas adelante veremos información sobre que debemos hacer para no repetir variables...
Option ExplicitSub num_matriz()'Delcarando matriz 3x5Dim número(3, 5) As Stringnúmero(0, 0) = "valor(0-0)"número(0, 1) = "valor(0-1)"número(0, 2) = "valor(0-2)"número(0, 3) = "valor(0-3)"número(0, 4) = "valor(0-4)"número(0, 5) = "valor(0-5)"número(1, 0) = "valor(1-0)"número(1, 1) = "valor(1-1)"número(1, 2) = "valor(1-2)"número(1, 3) = "valor(1-3)"número(1, 4) = "valor(1-4)"número(1, 5) = "valor(1-5)"número(2, 0) = "valor(2-0)"número(2, 1) = "valor(2-1)"número(2, 2) = "valor(2-2)"número(2, 3) = "valor(2-3)"número(2, 4) = "valor(2-4)"número(2, 5) = "valor(2-5)"número(3, 0) = "valor(3-0)"número(3, 1) = "valor(3-1)"número(3, 2) = "valor(3-2)"número(3, 3) = "valor(3-3)"número(3, 4) = "valor(3-4)"número(3, 5) = "valor(3-5)"'Declarando variables a,b : imprime matrizDim a As IntegerDim b As IntegerDo While a < 3a = a + 1For b = 1 To 5Cells(a, b) = número(a, b)Cells(a, b).Interior.ColorIndex = 50Cells(a, b).Font.ColorIndex = 28NextLoop'Declarando variable i , para colores: ROJO,VERDE,AZULDim i As IntegerFor i = 3 To 5Cells(2, i).Interior.ColorIndex = iNextEnd Sub
CONSTANTES
Al igual que las variables, las constantes pueden utilizarse para almacenar valores, pero la diferencia es que no se pueden modificar (de ahí su nombre).
Por ejemplo, podríamos añadir una constante para evitar tener que repetir un número como 2,718281828459:
Sub no_const_ejemplo()Cells(1, 1) = Cells(1, 2) * 2.718281828459Cells(2, 1) = Cells(2, 2) * 2.718281828459Cells(3, 1) = Cells(3, 2) * 2.718281828459Cells(4, 1) = Cells(4, 2) * 2.718281828459Cells(5, 1) = Cells(5, 2) * 2.718281828459End Sub
Esto hace que el código sea mucho más fácil de leer (las partes importantes en particular) y hace que sea mucho más fácil cambiar el valor de la constante, en caso de necesitarlo:
Sub const_ejemplo()'Declaración de una constante + asignación de valorConst Constante_1 As Double = 2.718281828459Cells(1, 1) = Cells(1, 2) * Constante_1Cells(2, 1) = Cells(2, 2) * Constante_1Cells(3, 1) = Cells(3, 2) * Constante_1Cells(4, 1) = Cells(4, 2) * Constante_1Cells(5, 1) = Cells(5, 2) * Constante_1End Sub
EL CAMPO DE LAS VARIABLES
Al declarar una variable al iniciar un procedimiento (Sub), ésta sólo podrá ser utilizada al interior de este mismo procedimiento. El valor de la variable no se conservará luego de la ejecución del procedimiento, no se ejecutará en otros "sub".
Sub procedimiento_1()Dim var1 As Integer' => Empleo de una variable tan solo en el interior de un procedimientoEnd SubSub procedimiento_2()' => var1 no puede utilizarse aquíEnd Sub
Si desea utilizar una variable en alguno de los procedimientos de un módulo, sólo debe declararla al principio del módulo. Y si declaras una variable de este modo, su valor se conservará hasta que cierres el libro de trabajo.
Dim var1 As IntegerSub procedimiento_1()' => var1 se puede utilizar aquíEnd SubSub procedimiento_2()' => var1 también se puede utilizar aquíEnd Sub
Para poder usar una variable en cualquier módulo, en el mismo principio que el ejemplo anterior, sólo tienes que sustituir Dim por Global:
Global var1 As Integer
Para conservar el valor de una variable después de la ejecución del procedimiento en el que aparece, sustituya Dim por Static:
Sub procedimiento_1()Static var1 As IntegerEnd Sub
Para conservar los valores de todas las variables de un procedimiento, agrega Static antes de Sub:
Static Sub procedimiento_1()Dim var1 As IntegerEnd Sub
CREAR SU PROPIO TIPO DE VARIABLE
No dedicaremos mucho tiempo a este tema. Veamos un ejemplo:
'Creación de un tipo de variableType guestsapellido As Stringnombre As StringEnd TypeSub variables()'DeclaraciónDim p1 As guests'Para asignar valores a p1p1.apellido = "mi apellido"p1.nombre = "mi nombre"'Ejemplo de usoMsgBox p1.apellido & " " & p1.nombreEnd Sub


0 Comentarios