Vous êtes sur la page 1sur 13

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado

2015

Mdulo 3 Elementos del Lenguaje de Programacin VBA


Excel 2007-2010

Pontificia Universidad Catlica del Per

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

Tema 1: Variables
1.1 Reglas en VBA para la creacin de variables
Una variable es un smbolo, una palabra que nos permite representar un elemento a
utilizar, este elemento servir para almacenar un valor, estos elementos pueden ser
actualizados durante la ejecucin de la macro.
Existen varias reglas sobre cmo deben ser creadas las variables, las principales son:

Se puede usar letras, nmeros y caracteres de puntuacin.


VBA no distingue maysculas de minsculas
No se pueden usar espacios ni puntos
Los principales caracteres prohibidos son: #$%!
No se pueden usar palabras reservadas

En general se recomienda que use variables con nombres relacionados al propsito


para el cual se emplearn y evite el uso de todo tipo de caracteres que no sean letras
o nmeros.
Algunos ejemplos de variables son:

X=1
TipoInteres = 0.008
IntroducirDatos = False
X=x+1
Nombre = Raul
FechaInicio = #28/07/2006#

Note que los textos se encuentran entre comillas dobles, y las fechas se encuentran
dentro de los smbolos libra (#).

Pontificia Universidad Catlica del Per

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

Tema 2: Tipos de datos


2.1 Tipo de dato por defecto (variant)
Si bien los datos empleados en los ejemplos de variables son distintos, en ningn
momento se ha definido o declarado los tipos de datos empleados. Prueba el siguiente
ejemplo:
Sub ManipulaVariant()
MiDato = 123
MiDato = MiDato /2
MiDato = Respuesta: & MiDato
MsgBox MiDato
End Sub

Observe que la variable MiDato contiene originalmente el texto 123 por lo tanto
MiDato sera un tipo de dato conocido como String, luego de ello, en la siguiente lnea,
se realiza una divisin, es decir el texto 123 se convierte automticamente en un
nmero para poder ser dividido. Una vez ejecutada la divisin, MiDato ser de un tipo
conocido como Double, luego en la siguiente lnea, MiDato contendr el texto
Respuesta:, unido al valor que tenga almacenado la variable MiDato, volviendo a ser
de un tipo String.

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

Los cambios en los tipos de datos empleados se pueden producir pues en realidad
MiDato es de un tipo cambiante conocido como Variant, al no declarar de forma
explcita qu tipo de dato se est empleando, se usa el tipo Variant.
Sub ManipulaVariant()
MiDato = 123
MsgBox TypeName(MiDato)
MiDato = MiDato /2
MsgBox TypeName(MiDato)
MiDato = Respuesta. & MiDato
MsgBox TypeName(MiDato)
MsgBox MiDato
End Sub
Agreguemos las lneas faltantes en el ejemplo, y veamos que se muestra los tipos de
datos utilizados, como se ha mencionado el tipo de dato cambia, pues si bien se
manipula un String o un Double, en realidad MiDato es un Variant.
Si bien este manejo de los datos puede ser til, en algunos casos se pueden producir
errores durante la ejecucin si no se tiene cuidado con el uso de los mismos, por
ejemplo, en el ejercicio empleado, reemplace el texto 123 por el texto Excel, y
vuelva a ejecutar la macro, deber aparecer un mensaje de error como el siguiente:
En este mensaje se
seala
que
No
coinciden los tipos, lo
cual hace referencia
al hecho de que no
coinciden los tipos de
datos empleados. A
fin de identificar la
lnea en la que se
produce
el
error,
presione Depurar y
quedar marcada la
lnea en la que se
produce el error.

Pontificia Universidad Catlica del Per

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

2.2 Declaracin del tipo de dato


A fin de emplear los tipos de datos de forma explcita, estos tipos deben ser
declarados, o dimensionados, algunos ejemplos de cmo se pueden declarar las
variables son:
Dim Variable1 As Integer
Dim Variable02 As Double, Variable03 As Currency, Variable04 As Date
En el primer caso se emplea el tipo Integer, y en el segundo caso se estn
empleando los tipos Double, Currency y Date, cada uno de los tipos de datos
disponibles tiene un rango de valores permitidos, por ejemplo, el tipo de dato Byte
puede contener valores enteros que van de 0 a 255.

Participacin en el Curso
Revise el material denominado Material Adicional del mdulo 3
(obligatorio), a fin de conocer con mayor detalle los tipos de datos
disponibles y el rango de valores permitido para cada caso revise.

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

Tema 3: Estructuras de control

3.1 Uso del With end With


Existe un conjunto de estructuras de control que pueden emplearse a fin de emplear el
lenguaje VBA, la mayora de los lenguajes de programacin cuentan con estructuras
de control, en algunos casos similares a las que se revisarn.
Pruebe el siguiente ejemplo:
Sub CambiarFuente01()
Selection.Font.Name = Times New Roman
Selection.Font.FontStyle =Bold Italic
Selection.Font.Size = 12
Selection.Font.Underline = xlsingle
Selection.Font.ColorIndex = 5
End Sub
El cdigo mostrado realiza un cambio del formato correspondiente a lo que tenga
seleccionado con el cursor, a fin de probar el cdigo seleccione un rango de celdas
que tenga algn contenido escrito y ejecute la macro, como resultado de la ejecucin
el contenido seleccionado tendr el formato cambiado.

El cdigo mostrado en el ejemplo tiene como parte comn selection.font en todas las
lneas, en este caso, as como otros casos en los que el texto comn sea ms
extenso, se puede utilizar la estructura With end With; pruebe el siguiente ejemplo:

Pontificia Universidad Catlica del Per

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

Sub CambiarFuente02()
With Selection.Font
.Name = Times New Roman
.FontStyle =Bold Italic
.Size = 12
.Underline = xlsingle
.ColorIndex = 5
End With
End Sub
En este caso despus de la palabra With se coloca el contenido comn a ser repetido
en las siguientes lneas, este contenido en comn estar disponible hasta la lnea en la
que se haya colocado el texto End With; observe que todas las lneas que emplearn
la parte comn indicada con el With comenzarn con un punto ., esta estructura es
presentada con frecuencia cuando se hace uso del grabador.

3.2 Uso del If then else


Una de las estructuras ms empleadas es if .. then .. else, pruebe el siguiente ejemplo:
Sub Ejemplo01()
Dim Numero01 As Integer
Numero01 = Int(10* Rnd() )
If Numero01 = 8 then
MsgBox El numero alcanzado es: & Numero01
Else
MsgBox Su nmero no es el correcto
End If
End Sub

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

La funcin emplea la variable Numero01 (de tipo Integer), luego en la siguiente lnea
se emplea la funcin Rnd(), que retorna un nmero aleatorio entre 0 y 1, el cual es
multiplicado por 10 por lo que el mnimo nmero a obtener seria 0 y el mximo sera
10, a este resultado se le aplica la funcin INT(), esta funcin retorna la parte entera,
por lo que los valores posibles seran: 0, 1 10, este nmero entero es entregado a la
variable Nmero01 la cual almacenar el resultado.
Luego el nmero obtenido es comparado con 8, es decir, se verifica si el resultado
obtenido es 8, si lo es, se muestra el primer mensaje, en cambio, si el nmero
obtenido es distinto a 8 se mostrar el segundo mensaje.

Participacin en el Curso
Revise el material denominado, Material Adicional del mdulo 3
(obligatorio), a fin de conocer con mayor detalle el tema.

Pontificia Universidad Catlica del Per

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

3.3 Uso del Select Case


Una de las ventajas de la estructura if then else es la simplicidad de la misma, sin
embargo, una de las limitaciones que posee es que solo existen dos alternativas
posible a emplear, a fin de salvar esta limitacin es posible emplear un if dentro de otro
lo cual podra ser til en algunos casos, o emplear varios if. Sin embargo, existe una
estructura que nos permite tener varias alternativas de forma simultnea, esta
estructura es Select .. Case, pruebe el siguiente ejemplo:
Sub EjemploSelect()
Dim Acumulado As Integer
Acumulado = Int (100*Rnd())
Select Case Acumulado
Case 0 to 30
MsgBox Acumulado & Acumulado & est en tercio inferior
Case 31 to 60
MsgBox Acumulado & Acumulado & est en tercio medio
Case 61 to 100
MsgBox Acumulado & Acumulado & est en tercio superior
End Select
End Sub

En este ejemplo, al comienzo del programa, se declara la variable Acumulado, la cual


est siendo declarada de tipo Integer, luego en la siguiente lnea se usa la funcin rnd
en combinacin con la funcin int, las cuales proporcionarn un valor entero entre 0 y
100, el resultado obtenido es evaluado en la siguiente lnea en la que comienza la
estructura con Select Case seguido del elemento a evaluar, si el valor obtenido est
entre 0 y 30, se mostrar el primer mensaje, si el valor obtenido est entre 31 y 60 se

10

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

mostrar el segundo mensaje, y si el valor se encuentra entre 61 y 100 se mostrar el


tercer mensaje, la estructura finaliza con la sentencia End Select.

3.4 Uso del FOR


Existe otra estructura de uso frecuente en la que un conjunto de instrucciones se
repiten una determinada cantidad de veces, esta estructura es FOR, a fin de evaluar el
funcionamiento de la misma, pruebe paso a paso el siguiente ejemplo:
Sub EstructuraForNext()
Dim Base As Integer
Dim Exponente As Integer
Dim Resultado As Integer
Dim Contador As Integer
Base = 4
Exponente = 4
Resultado = 1
For Contador = 1 To Exponente Step 1
Resultado = Resultado * Base
Next
MsgBox Base & elevado a & Exponente & = & Resultado
End Sub

En el ejemplo notar que en las primeras lneas se produce la declaracin de las


variables a utilizar, a continuacin, se asigna un valor inicial a algunas de estas
variables, luego comienza la estructura FOR, en la que aparece la asignacin del valor
1 a la variable Contador luego la palabra to seguido de la variable exponente, dado
que exponente en el momento de la ejecucin del FOR posee el valor de 4, el
Contador se incrementar desde el valor de 1 hasta el valor de 4, el avance estar
dado por la instruccin step la cual est seguida del valor 1, lo cual significa que

Pontificia Universidad Catlica del Per

11

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado 2015


Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado
2015

durante la primera ejecucin del FOR el contador valdr 1 luego valdr 2 y as


sucesivamente hasta alcanzar el valor de 4, si en cambio se emplease step 2, el
contador valdra inicialmente 1 luego 3 y no existira una tercera ejecucin ya que 5
supera el lmite de 4 establecido por la variable exponente, la parte correspondiente a
step 1 es opcional; si no se coloca step 1 se asume que el incremento es de uno en
uno por defecto.
La estructura FOR repetir todas las instrucciones que se encuentren entre el inicio del
FOR y el cierre de la estructura FOR con NEXT
Un caso especial de ejecucin del FOR est relacionado al uso de objetos, pruebe el
siguiente ejemplo:
Sub ContarHojas()
Dim Item As Worksheet
For Each Item In ActiveWorkbook.Sheets
MsgBox Item.Name
Next Item
End Sub
En este caso el tipo de dato es Worksheet este tipo de dato corresponde al manejo
de una hoja, luego de realizada la declaracin, comienza la estructura del FOR, la cual
en esta ocasin toma cada una de las hojas del libro que se encuentra en uso,
ActiveWorkbook.Sheets representa a todas las hojas del libro en uso o libro activo,
en la siguiente lnea se muestra, en un mensaje, el nombre de cada hoja, el cierre de
esta estructura se produce con la estructura Next tem.

3.5 Uso del Do while


En el caso de la estructura FOR, la cantidad de ejecuciones es conocida en el
momento en el que se va a producir la ejecucin, sin embargo, hay ocasiones en las
que la cantidad de veces que una rutina debe repetirse no es conocido al momento del
inicio de la ejecucin, grabe el archivo en el que se encuentra trabajando y pruebe el
siguiente ejemplo:
Sub EjemploDo()
Dim NumeroAleatorio As Integer
NumeroAleatorio =0
Do While NumeroAleatorio <> 8
NumeroAleatorio = Int(10 * Rnd())
Loop
MsgBox alcanzo el nmero: & NumeroAleatorio
End Sub

12

INFOPUC

Automatizacin y Programacin en Hojas de Clculo con MS Excel Nivel Avanzado


2015

En este ejemplo, se declara la variable NumeroAleatorio de tipo Integer, a


continuacin se le asigna el valor inicial de 0, luego comienza la instruccin DO, la cual
finaliza con la instruccin LOOP, este DO evala si el nmero aleatorio obtenido es
distinto a 8, si el nmero evaluado es distinto a ocho, se continuar ejecutando la
instruccin que se encuentra dentro del DO LOOP, dentro de este bucle se asigna un
nuevo valor a la variable NumeroAleatorio, el cual es un nmero entero entre 0 y 10,
en el momento en que se obtenga el valor de ocho esta ejecucin se detendr.

Participacin en el Curso
Revise el material denominado, Material Adicional del mdulo 3
(obligatorio), a fin de conocer con mayor detalle el tema.

Pontificia Universidad Catlica del Per

13