View
214
Download
1
Category
Preview:
Citation preview
Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales
Franco Guidi PolancoEscuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chilefguidi@ucv.cl
Introducción
Una “macro” es una secuencia de instrucciones que automatiza alguna tarea.Una macro puede ser ejecutada repetidas veces.Las macros pueden ser creadas de dos formas:p
Automáticamente, “grabando” una secuencia de operaciones (más fácil, pero más limitado).Manualmente, escribiendo una a una las instrucciones (más complejo, pero más flexible).
17/11/10Franco Guidi Polanco 2
Para iniciar (Office 2007)
Desplegar “ficha de programador” en cinta de
iopciones
17/11/10Franco Guidi Polanco 3
Barra de herramientas (Office 2007)
Ficha del programador
17/11/10Franco Guidi Polanco 4
Seguridad de macros (Office 2007)
17/11/10Franco Guidi Polanco 5
Guardado de archivos en Office 2007
El guardado de planillas que contienen macros debe hacerse en archivos “con macros habilitadas”, de extensión XLSM.
17/11/10Franco Guidi Polanco 6
Tipos de macros en VBA
Subrutinas (“VBA sub procedures”): comandos que realizan tareas.Funciones (“VBA functions”): retornan un valor, como las funciones integradas de Excel. Pueden ser utilizadas por otras funciones o subrutinas, o directamente desde una celda de una planilla.
17/11/10Franco Guidi Polanco 7
Escritura de código en VBA
Se debe ingresar a la “ventana del editor de VBA” (oprimir botón Visual Basic en ficha del programador, o ALT-F11).
El editor de VBA es otra aplicación, pero opera integradamente con Excel.
17/11/10Franco Guidi Polanco 8
Vista del Editor VBA
17/11/10Franco Guidi Polanco 9
Inserción de un módulo
Oprimir botón derecho sobre ventana de proyecto y seleccionar Insertar - Módulo
17/11/10Franco Guidi Polanco 10
Código en un módulo
17/11/10Franco Guidi Polanco 11
Sub proceduresSub procedures
17/11/10Franco Guidi Polanco 12
Identificación de Sub procedures
Comienzan con la palabra Sub y terminan con End Sub .Se identifican por un nombre (seguido de paréntesis)Ejemplo:
Paréntesis(siempre van)
Nombre Sub
procedure (siempre van)Inicio Sub procedure
procedure
Fin Sub
17/11/10Franco Guidi Polanco 13
Fin Sub procedure Instrucciones
de Sub procedure
Ejecución de Sub procedures
Botón ejecutar en editor de VBA
En Excel: Herramientas – Macro - EjecutarEn Excel: Herramientas Macro Ejecutar
Elementos básicos de cualquier programa (incluyendo Sub procedures)
Tipos de datos Estructuras datos,
variables y operadores
de control
Sub procedure
p
InstruccionesExpresiones
Instrucciones elementales
17/11/10Franco Guidi Polanco 15
Variables
Cada variable se identifica por su nombre (recomendable que sea significativo). El nombre de una variable puede contener casi cualquier letra o símbolo, pero debe comenzar siempre por una letra.No se deben usar espacios ni comas como parte de unNo se deben usar espacios ni comas como parte de un nombre de variable, como tampoco los símbolos: #, $, %, & o !, ni operadores aritméticos.Por ejemplo:
edad, cantidad_asistentes, NivelLiquido, GASTOS
No hay distinción entre mayúsculas y minúsculas, por lo tanto los identificadores: balanceFinal, BalanceFinal y BALANCEFINAL hacen referencia a la misma variable.
17/11/10Franco Guidi Polanco 16
Variables y el operador de asignación
VBA, por omisión, crea automáticamente variables cuando encuentra en el código un identificador válido.Para asignar un valor a una variable se debe utilizar el operador de asignación.
Operador asignación
Lado izquierdo Lado derecho
identificador_variable = valor
17/11/10Franco Guidi Polanco 17
(receptor) (valor a asignar)
Variables y tipos de datos
Si las variables son creadas automáticamente, el tipo de dato que almacenan depende del valor asignado:
Si se asigna un número la variable será numérica y se d á li ll i it étipodrán realizar con ella operaciones aritméticas.
dato = 100
Si se asigna un texto (que no represente un número) no se podrán realizar operaciones numéricas Los textosse podrán realizar operaciones numéricas. Los textos deben escribirse siempre entre comillas dobles (“”).
d “ l ”
17/11/10Franco Guidi Polanco 18
dato = “Hola”
Variables y tipos de datos
Caso particular:Si una variable recibe como valor un texto que qrepresenta a un número, entonces con esa variable sí se pueden realizar operaciones aritméticas.
dato = “100”
17/11/10Franco Guidi Polanco 19
Operadores aritméticos
Los argumentos de los operadores aritméticos son valores numéricos (números o variables numéricas) y generan como resultado un número.Operadores:
Suma: +Resta: -
l l ó *Multiplicación: *División: /División entera: \División entera: \Elevación a potencia: ^
17/11/10Franco Guidi Polanco 20
Operadores relacionales
Los operadores relacionales permiten comparar valores en expresiones. Generan como resultado un valor lógico (verdadero o falso).Operadores relacionales:
Mayor: >Menor: <
lMayor o igual: >=Menor o igual: <=Igual: =Igual: =
17/11/10Franco Guidi Polanco 21
Operadores lógicos
Los argumentos de operadores lógicos son valores lógicos y generan como resultado otro valor lógico.
Operadores lógicos (existen otros):p g ( )And: conjunciónOr: disyunciónNot: negación
17/11/10Franco Guidi Polanco 22
Operador de concatenación
Se utiliza para concatenar dos cadenas de caracteres:
& (ampersand)
Ejemplo:“Hola” & “Mundo” “HolaMundo”
nombre = “Hola”nombre & “Mundo” “HolaMundo”
17/11/10Franco Guidi Polanco 23
Expresiones
Aritméticas: generan como resultado un número. Ejemplo:
(3 * 4) / 5
Lógicas: generan como resultado un valor lógico (se utilizan generalmente como condiciones). Ejemplo:
Edad > 18(Edad > 18) And (Edad < 25)
(Valor <> 8) Or (Numero = 3) Or (Numero < 0)( ) ( ) ( )
Instrucciones elementales
Para ingreso de datos mediante un cuadro de diálogo:
InputBox( texto a desplegar )
Para despliegue de resultados mediante cuadro de diálogo:
MsgBox texto a desplegar
17/11/10Franco Guidi Polanco 25
Instrucciones elementales
Pedro
Instrucciones elementales
Para convertir valor a entero (importante en el ingreso de datos):
CInt( valor )Importante: Toda vez que el usuario ingrese p q gvalores que se suponen enteros, utilizaremos CIntpara convertir el valor leído a entero, a fin de
d ó devitar errores de precisión, propios de otros tipos de valores.Ej lEjemplo:
edad = InputBox( “Ingrese edad” )edad = CInt(edad)
17/11/10Franco Guidi Polanco 27
Instrucciones elementales
Para redondear valores:Round( valor, decimales)ou d( valo , decimales)
Ejemplo:Ejemplo:Round( 1234.567 , 1) 1234.6
Estructuras de control: Secuencia
Las instrucciones se escriben línea por línea. Si se desea escribir una instrucción en más de unaSi se desea escribir una instrucción en más de una línea, se debe utilizar el guión bajo ( _ ) que indica la continuación en la línea siguiente.
17/11/10Franco Guidi Polanco 29
Estructuras de control: Decisión
Determina el curso de acción a seguir dependiendo del valor de verdad de una condición.
If condición Thenacciones si condición es verdaderaacciones si condición es verdadera
Elseacciones si condición es falsaacciones si condición es falsa
Endif
17/11/10Franco Guidi Polanco 30
Estructuras de control: Decisión
Ejemplo: programa que pide al usuario una nota. Si la nota es igual o superior a cuatro, escribe APROBADO, en caso
t i ib REPROBADOcontrario escribe REPROBADO.
17/11/10Franco Guidi Polanco 31
Ejemplo
Determinar si un número ingresado es o no par:
Estructuras de control: Iteración
Realiza iteraciones mientras una condición es verdadera.
Do While condicióninstrucción 1instrucción 1instrucción 2…
Loop
17/11/10Franco Guidi Polanco 33
Estructuras de control: Iteración
Construir un procedimiento que calcule la suma de los N primeros enteros, con N proporcionado por el usuario.
17/11/10Franco Guidi Polanco 34
Interacción entre VBA y hojas de cálculoInteracción entre VBA y hojas de cálculo
17/11/10Franco Guidi Polanco 35
Objetos en VBA para Excel
Representan documentos o partes de un documento de Excel, para acceder y/o modificarlos desde VBA.Por ejemplo, un objeto de tipo Range representa celdas de un documento y permite leer y alterar los valores guardados en ellas.
17/11/10Franco Guidi Polanco 36
Principales objetos de VBA en Excel
Applicationpp
(Excel)
Workbooks
(Libro)
Worksheets
(Hoja)
Range
(Hoja)
17/11/10Franco Guidi Polanco 37
(Celdas)
Uso de referencias a objetos
Usando referencias a objetos se pueden acceder a datos en planillas de Excel.A l bj tAcceso a los objetos:a) Acceso a un Libro:
Application.Workbooks(“Ejemplo.xlsm”)Application.Workbooks( Ejemplo.xlsm )
b) Acceso a una Hoja de un Libro:Application.Workbooks(“Ejemplo.xlsm”).Worksheets(“Ingresos”)pp ( j p ) ( g )
c) Acceso a un Rango (celda) dentro de una Hoja de un Libro:Application.Workbooks(“Ejemplo.xlsm”).Worksheets(“Ingresos”).Range(“C2”)pp ( j p ) ( g ) g ( )
d) Acceso a un Valor de un Rango (celda) dentro de una Hoja de un Libro:
Application.Workbooks(“Ejemplo.xlsm”).Worksheets(“Ingresos”). Range(“C2”).Value
17/11/10Franco Guidi Polanco 38
Uso de referencias a objetos (por omisión)
Se puede omitir la referencia Application:Workbooks(“Ejemplo.xlsm”).Worksheets(“Ingresos”).Range(“C2”)( j p ) ( g ) g ( )
.Value
l f kb k bSi se omite la referencia Workbooks se asume Libro actual:
Wo ksheets(“Ing esos”) Range(“C2”) Val eWorksheets(“Ingresos”).Range(“C2”).Value
Si se omite la referencia Worksheets se asume HojaSi se omite la referencia Worksheets se asume Hoja de trabajo actual:
Range(“C2”).ValueRange( C2 ).Value
17/11/10Franco Guidi Polanco 39
Acceso a celdas mediante Range
Range permite acceder a celdas en planillas, mediante el ingreso de las coordenadas de las celdas. Ejemplo:
17/11/10Franco Guidi Polanco 40
Acceso mediante Cells
Cells permite el acceso a celdas de planillas mediante la especificación de sus coordenadas. Ejemplo:
Uso combinado de Range y Cells para acceder a celdas de planillas
Ejemplo
Un Sub Procedure que escribe en una planilla la tabla del 2:
Ejemplo (cont.)
Código:
Ejemplo 2
Un programa que escribe la tabla de multiplicar correspondiente al número ingresado en la celda A1 (la tabla empieza a desplegarse desde la línea 3 en adelante)
Ejemplo 2 (cont.)
Código:
Cells y Value
Para acceder a un valor en una celda o modificar el valor existente, se puede omitir la especificación de la propiedad Value al utilizar Cells:
Es lo mismo:Cells(i,j).Value = 10
Cells(i,j) = 10Como también:
x = Cells(i,j).Valuex = Cells(i,j)x Cells(i,j)
17/11/10Franco Guidi Polanco 47
Recommended