Declaración de Variables en VBA Para Excel

4
Declaración de variables en VBA para Excel (II) inShare0 Si el lector ya está familiarizado con el concepto de variable en el primer artículo de la serie ¿Qué es una variable en VBA para Excel? y también ha entendido el artículo Declaración de variables en VBA para Excel (I) , podría disponerse a leer este artículo que a buen seguro, le resultará interesante. En el anterior post hablábamos de variables que representaban a valores (ya sean fechas, números enteros, decimales, etc.). En este artículo veremos las variables que representan a objetos (debemos saber que en VBA llamamos objetos a cualquier elemento de Excel como hojas, celdas, gráficos, formas, tablas, etc.). Declarar variables de objeto está, si cabe, más justificado que declarar variables de valores, puesto que el ahorro en tiempo de escritura de código, en tiempo de ejecución del mismo, así como la organización y orden conseguidos en la estructura del procedimiento o macro, son espectaculares. ¿Cómo declarar una variable de objeto? La declaración de una variable de objeto sería: Dim Variable As TipoObjeto Que significa: Establecer Variable como TipoDeObjeto Una vez declarada la variable, se le puede asignar un tipo de objeto , pero en este caso (a diferencia de las variables asignadas a valores) debemos comenzar la línea con la palabra Set , como en esta macro: Sub VariableObjeto() Dim MiCelda As Range Set MiCelda = Worksheets("Hoja1").Range("A1") MiCelda.Value = 4560 MiCelda.Interior.Color = RGB(166, 210, 241) MiCelda.Font.Italic = True MiCelda.Font.Bold = True

Transcript of Declaración de Variables en VBA Para Excel

Declaracin de variables en VBA para Excel (II) inShare0

Si el lector ya est familiarizado con el concepto de variable en el primer artculo de la serie Qu es una variable en VBA para Excel? y tambin ha entendido el artculo Declaracin de variables en VBA para Excel (I) , podra disponerse a leer este artculo que a buen seguro, le resultar interesante.

En el anterior post hablbamos de variables que representaban a valores (ya sean fechas, nmeros enteros, decimales, etc.). En este artculo veremos las variables que representan a objetos (debemos saber que en VBA llamamos objetos a cualquier elemento de Excel como hojas, celdas, grficos, formas, tablas, etc.).

Declarar variables de objeto est, si cabe, ms justificado que declarar variables de valores, puesto que el ahorro en tiempo de escritura de cdigo, en tiempo de ejecucin del mismo, as como la organizacin y orden conseguidos en la estructura del procedimiento o macro, son espectaculares.

Cmo declarar una variable de objeto?

La declaracin de una variable de objeto sera:

Dim Variable As TipoObjeto

Que significa:

Establecer Variable como TipoDeObjeto

Una vez declarada la variable, se le puede asignar un tipo de objeto, pero en este caso (a diferencia de las variables asignadas a valores) debemos comenzar la lnea con la palabra Set , como en esta macro:

Sub VariableObjeto()

Dim MiCelda As Range

SetMiCelda = Worksheets("Hoja1").Range("A1")

MiCelda.Value= 4560 MiCelda.Interior.Color = RGB(166, 210, 241) MiCelda.Font.Italic = True MiCelda.Font.Bold = True

End Sub

La macro anterior declara la variable "MiCelda" como un rango, despus asigna la variable a la celda A1 y posteriormente (en las ltimas lneas) realiza varias acciones con la celda, nombrndola en todas las lneas siempre con el nombre de variable declarado al principio (en una lnea inserta el valor 4560, en otra lnea proporciona el color azul claro, en otra aplica cursiva y en la ltima aplica negrita).

Si no hubiramos utilizado una variable de objeto, el cdigo de las 3 lneas que modifican la celda A1 podra haber sido as de largo:

SubVariableObjeto()

Worksheets("Hoja1").Range("A1")=4560 Worksheets("Hoja1").Range("A1").Interior.Color = RGB(166, 210, 241) Worksheets("Hoja1").Range("A1").Font.Italic = True Worksheets("Hoja1").Range("A1").Font.Bold= True

End Sub

El primer cdigo se ejecuta de forma ms rpida que este ltimo, porque Visual Basic no tiene que buscar una y otra vez la ruta de la celda A1. Aunque aun podramos perfeccionarlo (en cuanto a eficiencia) de la siguiente forma:

Sub VariableObjeto()

Dim MiCelda As Range

Set MiCelda = Worksheets("Hoja1").Range("A1")

With MiCelda

.Value = 4560 .Interior.Color = RGB(166, 210, 241) .Font.Italic = True .Font.Bold = True

End With

End Sub

Siendo este el cdigo ms corto y rpido de todos.

Qu tipos de objetos pueden establecerse como variables?

En el ejemplo anterior, el tipo de objeto era Range, puesto que se quera asignar la variable a una celda. Tambin sera Range si quisiramos asignarla a columnas, filas, etc.

En el caso de querer asignar variables a un tipo de objeto "Hoja", deberamos poner Worksheet .Otro ejemplo podra ser ListObjectpara referirnos a objetos tipo "Tabla de Excel". El usuario puede elegir el tipo de objeto al que refererirse en la lista que el editor de VBA ofrece mientras se escribre:

Otras utilidades

Declarar variables de objeto no sirve nicamente para acortar el cdigo y hacerlo ms eficiente, un ejemplo lo tenemos en el siguiente cdigo, que utiliza una variable de objeto para que Excel vaya recorriendo una serie de hojas hasta que encuentra una que se llama "HojaClave" y la seleccione.

Sub VariableObjeto()

Dim MiHoja As Worksheet

For Each MiHoja In Worksheets

If MiHoja.Name = "HojaClave" Then MiHoja.Select End If

Next MiHoja

End Sub

Despus de declarar la variable de objeto, utilizamos un bucle For Each - Next y dentro de l, utilizamos un condicional If - End If. Declarar una variable nos ha evitado tener que nombrar mediante cdigo cada una de todas las hojas que tengamos para buscar la que deseamos.

Si tradujramos el cdigo a lenguaje castellano, sera:

Iniciamos SubrutinaVariableObjeto()

EstablezcoMiHojacomo TipoDeObjetoHojaDeExcel

Por CadaMiHojaEn LaColeccinDeHojasDeMiLibro

SiMiHoja.Nombre = "HojaClave" Entonces MiHoja.Seleccionada FinalDelCondicionalSI

ExaminarSiguienteMiHoja

End Sub

Recorrer hojas o celdas en busca de una que cumpla con una condicin, es una de las utilidades mayores de la declaracin de variables de objeto, puesto que permite utilizarse con bucles y condicionales que detectan si se cumple la condicin que queremos y pueden actuar.

Si desea llevar a la prctica todo lo que le hemos ofrecido en este artculo, puede asistir a nuestros cursos prcticos deExcelo puedesolicitarlosincompany: