Maracaibo, Venezuela , Septiembre 2010
Macros en Excel.Taller N⁰ 1
Por: Ing. Reneé González MartínezC.I.: 11.888.960
Prof. La Universidad del ZuliaEmail: [email protected]
Objetivos Especificos de los cursos
Reconocer el entorno de desarrollo de VBA en Excel.
Identificar los objetos de control básicos, a partir de ejercicios
prácticos.
Diferenciar las estructuras de control : If, Case, For, While.
Construir distribuciones probabilísticas usando funciones definidas
por otros usuarios.
Ejecutar simulaciones y pronósticos en Crystal Ball a partir de
macros
Construir gráficos a partir de los resultados de los pronósticos
Alcance del taller
Está orientado a facilitar el desarrollo de habilidades para la
programación de macros en Excel a partir de 4 sesiones.
Lo que no es el taller…
No es una clase magistral que presenta teorias o discute tesis.
Contenido de Clase 1
1.1. Definiciones Básicas: Macro, Entorno de Desarrollo Integrado,Variables,
Procedimientos, Estructuras de Control.
1.2. Configuración para el entorno de desarrollo de VBA para Excel.
1.3. Entorno de Desarrollo (IDE): Menu, Objetos de Control, Modo Diseño y
Modo de Ejecución, Editor de VBA.
1.4. Objetos de Control: De Formulario y ActiveX
Contenido (Continuación)
1.4.1. El Botón de Comando (Command Button)
1.4.2. El Botón de Opción (Option Button)
1.4.3. La Lista (Listbox)
1.4.4. La Lista Desplegable (Combobox)
1.4.5. El Contenedor (Frame)
1.5. Sintaxis Básicas de VBA: Dim, Sheets, Cells,
Activate, ClearContents, Msgbox, Range.
¿Qué es una macro?:
Es una serie de instrucciones almacenadas para ser ejecutadas
posteriormente a partir de una llamada. El uso de macros permite la
automatización de tareas repetitivas.
¿Con qué lenguaje de programación vamos a trabajar?
VBA (Visual Basic for Applications) es un lenguaje de macros de Microsoft
Visual Basic usado para programar aplicaciones bajo Windows, incluidas en
varias aplicaciones Microsoft. VBA es un subconjunto de Visual Basic 6.0.
1.1. DEFINICIONES BÁSICAS
Algoritmo
Es una secuencia de instrucciones que conforman un
modelo de solución para resolver un problema o ejecutar
una actividad. El algoritmo puede ser escrito
(pseudocódigo) representado en forma gráfica
(diagrama de flujo)
Un programa
Es un algoritmo escrito en un lenguaje de programación.
Por ello, se debe respetar la sintaxis y enmarcar la
solución del problema dentro de las características del
lenguaje de programación.
Ejemplos de Lenguajes de Programación: Lenguaje C,
Pascal, Fortran, Basic, html, Java.
Entorno de Desarrollo Integrado o IDE(Integrated Development Environment)
Es una aplicación, que consta de un editor de código, un traductor, un
depurador y un constructor de interfaz gráfica (GUI). Los IDE’s pueden
ser aplicaciones por sí solas o pueden ser parte de aplicaciones
existentes.
El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de las
aplicaciones de Microsoft Office, lo que hace posible escribir sentencias
Visual Basic en forma de macros para Excel.
Los IDE proveen un marco de trabajo amigable para la mayoría de los
lenguajes de programación tales como: C++, Java, C#, Delphi, Visual
Basic , etc.
Entorno de Desarrollo Integrado o IDE(Integrated Development Environment)
El editor es un programa como “un procesador de textos” que
permite la escritura del código fuente (para lo cual debe
conocerse la sintaxis del lenguaje de programación).
El traductor es un programa que convierte el código fuente a
un código objeto y luego a un código ejecutable. El traductor
puede ser un compilador o un intérprete. El primero de ellos
revisa la sintaxis y si no se detectan errores hace la
traducción del código fuente a un lenguaje de bajo nivel
mientras que el intérprete hace la revisión línea por línea.
El depurador es un programa que facilita la revisión del
código.
El constructor de Interfaz gráfica facilita la construcción del
entorno gráfico.
Entorno de Desarrollo Integrado o IDE(Integrated Development Environment)
¿A qué programa del IDE corresponde la siguiente figura?
Una Variable
Es un espacio de memoria reservado para el almacenamiento de valores
que pueden cambiar durante la ejecución de un programa. Requiere de
un identificador o nombre y de un tipo de datos.
Ejemplo: Dim v as Integer, Dim x as Double, Dim p as String,
Public v1 as Integer, Public v2 as Double.
Un Procedimiento en VBA
Es un bloque de instrucciones que ejecuta una tarea específica.
Tiene un nombre o identificador y puede recibir o no parámetros.
Se puede llamar a un procedimiento desde distintos lugares del código.
Luego de su ejecución, el control del flujo del programa regresa al punto
que llamó al procedimiento.
Hacer click en un botón de comando se traduce en un procedimiento,
hacer un click en una lista se traduce en un procedimiento, una macro …
Los procedimientos private sub o sub son comunes en VBA.
Private Sub BotonDeComando _Click()
InputBox (“Ingrese el Valor de …”)
…
End Sub
1.2. Settings para el Programador de VBA.
Instalar Crystal Ball y Office 2007 (preferiblemente)
En Excel, ir a botón de Office y hacer click en el botón “Opciones de
Excel”
Hacer click en la casilla de verificación “Mostrar ficha Programador
En la cinta de opciones” y luego presionar “Aceptar”
1.2. Settings para el Programador de VBA.
En Excel, en la etiqueta “Programador”, ir a botón de “Visual Basic y
hacer click (con ello se muestra el editor de Visual Basic)
Hacer click en la etiqueta “Herramientas” y Seleccionar “Referencias”
Seleccionar los item mostrados y presionar “Aceptar”
1.3. Entorno de Desarrollo de VBA .
Seleccione todas las filas y columnas del libro activo .
Presione botón derecho y seleccione “Formato de Celdas”
Seleccionar el color de fondo blanco
Haga click en el color blanco y presione “Aceptar”
1.4. Controles de Formularios Versus Controles Activex.
Ejercicio:
Crear dos botones de comando: Un botón de comando de los controles de
formulario y un botón de comando de los controles ActiveX .
Para cada botón escribir el siguiente código:
MsgBox "Hola. Soy el Prompt", vbOKOnly, "Soy el titulo“
1.4. Controles de Formularios Versus Controles Activex.
Propósito:
Establecer comparaciones en cuanto a nombre del control, forma de codificar y
alcance del código.
Analizar: ¿Cómo se puede reutilizar el código usando un control Activex?
Pasos para construir el 1er botón
1.4. Controles de Formularios Versus Controles Activex.
1. Hacer click en “Modo Diseňo”
2. Hacer click en el menu “Insertar”
y luego en el control de botón de
“ Controles de formulario”
Para modificar el texto del botón
En Modo Diseňo, hace click con el
botón derecho
Hacer click en “Modificar texto” y
cambiar el nombre del texto: “Control de
Formulario”
Para ejecutar la macro, haga el clic en
el botón creado
Pasos para construir el 2do botón
1.4. Controles de Formularios Versus Controles Activex.
1. Hacer click en “Modo Diseňo”
2. Hacer click en el menu “Insertar”
y luego en el control de botón de
“ Controles ActiveX”
Pasos para construir el 2do botón
1.4. Controles de Formularios Versus Controles Activex.
Para las propiedades del botón, haga click
derecho en el botón.
Aparece un menu emergente y haga click
en “Propiedades”
Pasos para construir el 2do botón
En la propiedad “Caption” escriba
“Control ActiveX”
En la propiedad “Name” escriba
“cmdMensaje”
Cierre la ventana “Propiedades”
Haga dobleclick en el botón en
estudio
Pasos para construir el 2do botón
Cierre la ventana para pasar a la interfaz
Escriba el siguiente código dentro del Private - End Sub
MsgBox "Hola. Soy el Prompt", vbOKOnly, "Soy el titulo“
1.4. Diferencias entre Controles de Formularios Vs Controles Activex.
Controles Activex Controles de Formulario
Se codifican ante eventospromovidos por el usuario (Click,DobleClick, Cambios, etc.)
Se Codifican en macros(procedimientos)
El alcance del código es local a lahoja donde se halla el control
El alcance del código es globaldentro del libro
El código se halla dentro de unprivate sub /- end sub
El código se halla dentro del parsub – end sub
Para tener acceso al código bastacon hacer doble click en el objeto
Para tener acceso al código debeentrar al menu “Ver macro”
¿Con qué tipo de controles programamos ?
1.4.1. El Botón de Comando.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Sub sumar()
„Ojo: Discutir Suma y sumar
Cells(7, 5) = Cells(7, 3) + Cells(7, 4)
End Sub
Sub Limpiar()
Range(Cells(7, 5), Cells(7, 3)).Select
Selection.ClearContents
End Sub
Sub Limpiar2()
ActiveSheet.Range("c7:e7").Select
Selection.ClearContents
End Sub
1.4.2. El Botón de Opción y el Control Contenedor.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Private Sub CmdIraModelo_Click()
„ Si se selecciona la declinación exponencial
If OptDecExp = True Then
Sheets("Exponencial").Select
End If
„Si se selecciona la declinación hiperbólica
If OptDecHip = True Then
Sheets("Hiperbolica").Select
End If
End Sub
De acuerdo al código y a la interfaz,
identifique:
1. Tipo de controles son usados y nombre
de los controles
2. Acción de los botones
3. Número y nombre de las hojas del Libro
1.4.3. La Lista.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Private Sub cmdOk_Click()
If ListBox1.ListIndex = 0 Then
MsgBox "PEMEX"
End If
If ListBox1.ListIndex = 1 Then
MsgBox "ECOPETROL"
End If
If ListBox1.ListIndex = 2 Then
MsgBox "PDVSA"
End If
If ListBox1.ListIndex = 3 Then
MsgBox "CHEVRON"
End If
End Sub
1.4.3. La Lista.
Pasos sugeridos:
1. Construya la Interfaz Gráfica 2. Construya una lista en excel, sombre la lista y
En el cuadro de nombre coloque Empresas
1.4.3. La Lista.
Ejercicio. 3. Haga click derecho en el objeto lista y en la
propiedad ListfFillRange asigne Empresas .
4. Escriba el código
Private Sub cmdOk_Click()
If ListBox1.ListIndex = 0 Then
MsgBox "PEMEX"
End If
If ListBox1.ListIndex = 1 Then
MsgBox "ECOPETROL"
End If
If ListBox1.ListIndex = 2 Then
MsgBox "PDVSA"
End If
If ListBox1.ListIndex = 3 Then
MsgBox "CHEVRON"
End If
End Sub
1.4.3. La Lista.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Private Sub cmdOk_Click()
Select Case ListBox1.ListIndex
Case 0
MsgBox "PEMEX"
Case 2
MsgBox "ECOPETROL"
Case 3
MsgBox "PDVSA"
Case 4
MsgBox "CHEVRON"
End Select
End Sub
1.4.3. La Lista.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Consideraciones:
1. ¿ Qué funciones o métodos corresponden
al control Lista? (Usar el editor para identificar
los métodos)
Private Sub cmdOk_Click()
txt1 = ListBox1.Text
End Sub
1.4.4. La Lista Desplegable.
Ejercicio: Construya la siguiente interfaz (lado izquierdo) y codifique los botones (lado derecho)
Consideraciones:
1. Cree una lista con dos elementos: Cuadrado y Cubo
2. Use la propiedad ListfillRange. Oculte la lista (en este caso
se halla oculta en “F”)
Private Sub cmdCalcular_Click()
Dim base As Double
Dim resultado As Double
base = Cells(7, 4)
If ComboBox1.ListIndex = 0 Then
resultado = base ^ 2
End If
If ComboBox1.ListIndex = 1 Then
resultado = base ^ 3
End If
ActiveSheet.Range("d8").Select
Cells(8, 4) = resultado
End Sub