Anda di halaman 1dari 75

Las Macros qu son?

DESDE EL PUNTO DE VISTA GENERAL, PODEMOS DECIR QUE LAS MACROS NOS AYUDAN A AUTOMATIZAR TAREAS. SON PARTE DE CDIGO DE PROGRAMACIN QUE ES INTERPRETADO POR EXCEL Y LLEVA A CABO DISTINTAS ACCIONES

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El Lenguaje VBA
2

El lenguaje de programacin de las macros Visual Basic para Aplicaciones (VBA), es un lenguaje de programacin comn, pero su entorno de desarrollo est plenamente integrado con las aplicaciones Microsoft Office, es decir no puede ejecutarse en forma autnoma. La forma en la que debemos guardar los archivos de Excel que contengan macros es libros de Excel habilitados para macros, su extensin ser .XLSM

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

La ficha del Programador (tome nota)


3

Esta ficha de opciones es especfica para interactuar con VBA, pero no se encuentra disponible con la instalacin bsica. Para activarla seleccionamos el BOTON OFFICE OPCIONES DE EXCEL MAS FRECUENTES OPCIONES PRINCIPALES PARA TRABAJAR CON EXCEL MOSTRAR FICHA PROGRAMADOR EN LA CINTA DE OPCIONES.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

La Seguridad : centro de confianza


4

Ficha Programador: grupo cdigo: seguridad de macros. Distintos grupos de opciones, dentro del Centro de Confianza:

Editores y Ubicaciones de confianza: son macros firmados digitalmente para verificar la autenticidad. De esta forma, si se ejecuta un cdigo que no cumpla con estos criterios, el centro de confianza deshabilitar el cdigo en forma automtica y aparecer un mensaje, para dejar la macro deshabilitada o habilitarla. Configuracin de ActiveX: permite habilitar o deshabilitar la utilizacin de estos controles (Los controles Active X son pequeos bloques empleados para la

creacin de programas, que se pueden usar para crear aplicaciones distribuidas que funcionen a travs de Internet empleando navegadores web. Algunos ejemplos incluyen aplicaciones para la recopilacin datos, para la visualizacin de determinados tipos de datos o para reproducir animaciones. El Malware, como los virus informticos o el spyware, podra infectar accidentalmente al usuario al visitar ste cualquier sitio web contaminado o malicioso que gestione las descargas haciendo uso de controles ActiveX.)
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

La Grabadora de Macros
5

Se guardan todas las acciones a partir del momento

en que la activamos (Grabar macro). Los nombres que le asignemos deben comenzar con una letra o un carcter de subrayado. No es posible incluir nombres que entren en conflicto, por ejemplo A2

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejercicio 1
6

Creemos una macro que nos permita darle color a

algunas celdas. Observa el cdigo. Recordemos que nuestras macros comienzan por defecto con referencias fijas, estos podremos modificarlo activando el botn usar referencias relativas o borrando la lnea de cdigo que hace referencia a la seleccin de las celdas

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Asignar Macros a Botones


7

Sabemos que podemos ejecutar macros, mediante el

cuadro de dilogo que se abre al presionar el comando MACROS, pero tambin podremos asignarles una macro a diferentes formas y objetos. LOS BOTONES DE FORMULARIO, son los preferidos, solo hay que dibujarlos y presionar la opcin GRABAR. Tambin podremos asignar una macro a una imagen, presionando el botn dcho. sobre ella, encontraremos la opcin ASIGNAR MACRO Adems podemos incluir nuestras macros en la barra de acceso rpido, para eso dentro de las OPCIONES DE EXCEL incluidas en el BOTN DE OFFICE, elegimos PERSONALIZAR
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejercicio 2
8

Cree una macro para eliminar la hoja actual, asgnela

a un botn de la barra de herramientas y pruebe su funcionamiento.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El Editor de VBA
9

Es la herramienta de VBA que nos permite analizar,

instruccin por instruccin el cdigo de programacin de las macros y realizar las modificaciones necesarias. Hay varias formas de acceder: BOTN VISUAL BASIC dentro de la ficha del PROGRAMADOR Botn MODIFICAR dentro del cuadro de dilogo MACRO ALT + F11

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

LAS VENTANAS
10

Las activamos con las opciones incluidas en el men VER VENTANA DE CDIGO

En esta se trabaja directamente con el cdigo de programacin VENTANA INMEDIATO Podemos ejecutar cdigo VBA, si escribimos directamente la instruccin y presionamos Enter. Nos permite probar el funcionamiento de instrucciones, sin tener que ejecutar una macro en su totalidad. VENTANA INSPECCIN Podemos seguir el funcionamiento de ciertas instrucciones de nuestros procedimientos si les agregamos una inspeccin. Estas expresiones de inspeccin se actualizan en forma automtica cuando se entra en modo de interrupcin (suspensin temporal de la ejecucin de la macro).
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

11

VENTANA LOCALES

Permiten ver los valores que poseen las variables definidas dentro de una macro durante su ejecucin, ejecutando en modo paso a paso (F8). VENTANA EXPLORADOR DE PROYECTOS Desde aqu podremos navegar por las estructura VBA de los archivos excel que estn abiertos. VENTANA PROPIEDADES Visualiza las diferentes propiedades de cada uno de los objetos de VBA que seleccionemos.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

PASO POR PASO


12MACRO (COMIENZA CON SUB) Sub desplazamiento() NOMBRE DE LA ' ' desplazamiento Macro COMENTARIOS (COMIENZAN CON ) ' Selecciono la celdas de la hoja A1 y las pinto en azul, luego me voy a la hoja 2 y hago lo mismo ' ' Acceso directo: Ctrl+Mays+D ' Range("A1:A101").Select SELECCIONA EL RANGO DE LA HOJA ACTIVA With Selection.Interior LO TRATAMOS EN LA PROXIMA DIAPOSITIVA .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With Sheets("Hoja2").Select SELECCIONAMOS LA HOJA 2 Range("B2:M22").Select La lnea que genera el cambio With Selection.Interior de color es ThemeColor .Pattern = xlSolid Probemos Depurando. .PatternColorIndex = xlAutomatic Veamos que sucede al quitar .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.399975585192419 Range().Select .PatternTintAndShade = 0 End With End Sub FIN DE LA MACRO

WITHEND WITH
13

(tome nota)

Ejecuta una serie de instrucciones sobre un NICO OBJETO.

Consta de 2 partes: un objeto definido sobre el cual actuarn las instrucciones y una serie de comandos que actuaran sobre ese objeto (generalmente cambios en el formato). Selection.Font.Bold = True Selection.Font.Name = Arial Selection.Font.Size = 16 Selection.Font.Underline = xlUnderlineStyleNone Tambin se podra usar as: With Selection.Font Bold = True Name = Arial Size = 16 Underline = xlUnderlineStyleNone End With
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

A Practicar !
14

Agregue la ficha de opciones Programador. Recorra los distintos comandos includos en el grupo

Cdigo Con la grabadora, realice una macro que permita desplazarse dentro de una planilla, movindose una pantalla hacia la derecha. Luego haga otras que realicen lo mismo pero hacia la izquierda, hacia arriba y hacia abajo.(AvPag y RePag, ALT + AvPag o ALT + RePag) Tenga en cuenta que ser necesario utilizar referencias absolutas. Asigne las macros anteriores a botones, imgenes y barra de acceso rpido con su correspondiente cono.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

A Practicar!
15

Tome las macros anteriores y haga un anlisis del

cdigo, elimine lneas innecesarias. Cree una macro que modifique las opciones de relleno, fuente, tamao y color de fuente con la grabadora. Reemplace la construccin With que aparece en el cdigo generado por las instrucciones por separado.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

MTODOS, PROPIEDADES, OBJETOS Y COLECCIONES


16

Hemos trabajado con diferentes objetos, como una celda, una hoja, un libro, etc. Sobre estos objetos podemos aplicar MTODOS(acciones que pueden realizar los objetos). En VBA, antes de aplicar un mtodo debemos identificar al objeto. Ej: Sub Fuente() Selection.Font.Bold = True End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Podemos definir a los EVENTOS como toda ACCIN que puede ser reconocida por un objeto, por ejemplo, el clic del mouse sobre un botn o la pulsacin de alguna tecla Una COLLECIN es un OBJETO QUE CONTIENE VARIOS OBJETOS.Por ej: la coleccin de WORKBOOKS (que tambin es un objeto) contiene todos los objetos WORKBOOK abiertos. Sub Cerrar_libro() ActiveWorkbook. Close End Sub Sub Cerrar_todos() Workbooks.Close End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

17

Proteger la Hoja Activa Sub protejohoja() ActiveSheet.Protect contrasea End Sub Desproteger la Hoja Activa

Sub desprotejohoja() ActiveSheet.Unprotect contrasea End Sub


Proteger Macros En el Editor de Visual Basic, men Herramientas, submen Propiedades de (aqu saldr el nombre de tu archivo), se abrir un cuadro de dilogo con dos fichas General y Proteccin, en Proteccin marc la casilla de verificacin Bloquear proyecto para su visualizacin y establece la contrasea.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

18

MACROS POR EVENTOS


19

EJECUTAR MACROS AL ABRIR ARCHIVOS

cuando abrimos archivos es posible ejecutar macros que realicen ciertas acciones en forma automtica. Este tipo de macros son privadas del libro o de la hoja en cuestin y por lo tanto comienzan con la construccin Private Sub y terminan con End Sub Ejemplo: Realicemos una macro autoejecutable, para que al abrir el libro nos ubique en la celda C5. -Seleccionamos el objeto ThisWorkbook, accedemos a la ventana cdigo y en la lista desplegable elejimos el objeto Workbook.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejecutar una macro al abrir Archivo


20

Dentro del procedimiento escribimos: Sheets(1).Select (hace refernecia a la primera hoja ubicada en nuestro libro, independientemente de cual sea su nombre) Range(C5).Select
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

ltimo Registro - Offset


21

Supongamos que tenemos una hoja con varios datos y queremos posicionarnos en el ltimo para seguir cargando. Sheets(Datos).Select Range(A10000) Selection.End(xlUp).Select (Es ideal comenzar desde muy abajo, si lo hacemos con la grabadora nos ubicamos en la celda A10000 y luego presionamos las teclas CTRL + Flecha arriba, con esto nos ubicamos en el ltimo registro pero la idea es situarnos una fila abajo): inclumos ActiveCell.Offset(1,0).Select OFFset: nos permite desplazarnos a partir de una celda fija Offset(Row, column) valores positivos abajo y a la derecha, negativos hacia arriba y a la izquierda: Offset(2,-1)dos filas hacia abajo, 1 colummna a la izquierda.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejecutar Macros al cerrar Archivos


22

Esto lo lograremos en la ventana de cdigo del objeto Thisworkbook, lista desplegable BeforeClose
Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub
Otros Eventos del Workbook Activate y Deactivate (ejecuta la macro cuando tenemos varios libros abiertos a la vez y activamos o desactivamos alguno). BeforePrint (antes de imprimir) PrintPreview (nos mostrara la presentacin preliminar de una determinada seleccin). BeforeSave disparar la macro antes de grabar nuestro archivo.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Eventos Worksheet
23

Estos procedimientos de eventos se encuentran

relacionados con la hoja en la que se encuentra insertado el cdigo VBA Activate, Deactivate BeforeRightClick (presionamos el botn derecho del mouse.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Para tener en cuenta


24

Conviene incluir en los mtodos abreviados de ejecucin de

macro la tecla MAYSCULA, para no reemplazar una atajo de excel, quedara CTRL + MAYSCULA + Carcter Para salir del editor de VBA podemos utilizar ALT + Q Para ejecutar una macro en forma automtica cuando se abre el archivo, debemos incluir el cdigo VBA dentro del objeto THISWORKBOOK Si deseamos que la macro siempre est disponible, para que se pueda cargar en forma automtica al abrir Excel debemos guardarla en c:\Documents ad Settings\Datos de Programa\Micrososft\Excel\XLSTART Para modificar las caracterstcas del Editor vamos al men Herramientas/Opciones

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

A Practicar!
25

Cree una macro de inicio que ajuste la visualizacin

de la pantalla al 75%. Puede utilizar la grabadora para generar las lneas de cdigo y luego incorporarla al Thisworkbook

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Las Variables
26

Una variable es un lugar de almacenamiento con nombre, es decir un espacio de mem0ria que puede contener ciertos tipos de datos y que , a su vez, se puede modificar durante la ejecucin de la macro. Declaracin de Variables El nombre de las variables debe ser nico y no contener ms de 255 caracteres. Es recomendable declarar las variables y distinguir tres situaciones: Procedimiento: la variable que declaremos dentro de un procedimiento, Sub o Function Mdulo: sern declaradas fuera de cualquier procedimiento y son vlidas en todo el mdulo. Pblica: las variables que declaremos mediante la instruccin Public estarn disponibles para todos los procedimientos en todos los mdulos de todas las macros.
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Las Variables
27

Para declarar variables utilizamos la instruccin Dim. Si inclumos esta instruccin a nivel procedimiento, solo tendr efecto en la macro en cuestin. Ej: Dim variable1 as string Dim variable2 as boolean Si queremos utilizar las variables para distintas macros podemos definirlas en la seccin Declaraciones de la ventana cdigo y as lograr que tengan validez en todo el mdulo

Si queremos que sea pblica: Public variable1 as string


Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Tipo de Datos de Variables


28 String: puede contener letras, nros, espacios y signos de puntuacin: Dim mivariable$ es igual a Dim mivariable as string * 20 (20 caracteres de espacio) Boolean: True o False ( si se convierte a numrico el 0 es false, 1 es true) Nmeros enteros: dentro de los nmeros enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar: Byte: puede almacenar nmeros enteros dentro del rango desde 0 a 255 Integer: puede almacenar nmeros enteros dentro del rango -32.768 a 32.767 (se puede declarar con el signo %) Long: puede almacenar nmeros enteros dentro del rango -2.147.483.648 hasta 2.147.483.648 . (se puede declarar con el signo &) Currency: til para clculos monetarios. (se puede declarar con el signo @) Nmeros decimales: para almacenar nmeros decimales contamos con los siguientes tipos de datos: Single: almacena nmeros decimales en el rango +/- 1e-45 hasta 3e38 (se puede declarar con el signo !) Double: desde +/- 5e-324 hasta 1.8e308 (se puede declarar con el signo #)

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Variables
29
Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de

valor, pero ocupan mas memoria. Ejemplos:


Dim num1 As Integer Dim num2 As Integer num1 = 10 num2 = 20 'se mostrar un mensaje con la suma de las variables con el resultado 30 MsgBox num1 + num2

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Mas variables
30

La ventana locales es fundamental cuando trabajamos con variables ya

que nos permite visualizar los valores que toman.

Pblicas, privadas y estticas


La instruccin Public nos permite declarar variables que se utilizan en cualquier procedimiento de un proyecto Public mivariable as integer Private: (equivalente a utilizar Dim) slo podrn ser utilizadas a nivel del mismo mdulo Private mivariable as variant Static: mantendr su valor entre las distintas llamadas hasta que se reinicie el mdulo

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Constantes
31

Las constantes, como las variables, se utilizan para guardar datos y valores para nuestro programa, pero a diferencia de estas ltimas (las variables), el contenido que almacenen no cambia, siempre es constante. A diferencia de las variables que se declaran con la palabra Dim, las Constantes se declaran con la palabra Const. Const numero = 53 En la lnea anterior he creado una constante, que la llam numero y va a almacenar un nmero , y este valor, cuando se ejecute mi programa se mantendr invariable.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Constantes
32

Las constantes, como las variables, se utilizan para guardar datos y valores para nuestro programa, pero a diferencia de estas ltimas (las variables), el contenido que almacenen no cambia, siempre es constante. A diferencia de las variables que se declaran con la palabra Dim, las Constantes se declaran con la palabra Const. Const numero = 53 En la lnea anterior he creado una constante, que la llam numero y va a almacenar un nmero , y este valor, cuando se ejecute mi programa se mantendr invariable.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Option Explicit
33
El Option Explicit se utiliza a nivel de mdulo (sin ningn tipo de argumento

al inicio del mdulo) para forzar la declaracin explcita de todas las variables en este mdulo. Esta declaracin debe aparecer en la parte superior del mdulo, antes de cualquier procedimiento. Cuando esta declaracin se usa, un mensaje de error identifica cualquier variable no definida o mal escrita. Para que Option Explicit se inserte automticamente en cada nuevo libro: Ir a la barra del men del editor de macros. Men Herramientas Opciones En la ficha Editor, marca "Requerir declaracin de variables".

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Cajas con Mensajes


34

Los InputBox Con esta herramienta se mostrar un cuadro de dilogo en pantalla, en el cual se podr introducir un texto que devolver un string que se podr almacenar en una variable. Sintaxis InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos: (Si deseamos omitir algunos argumentos de posicin, debemos incluir el delimitador de coma correspondiente).

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Argumentos del InputBox


35
Parte prompt title default xpos Descripcin Requerido. Cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vaco. Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente.

ypos

Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma.
Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context. Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin deber especificarse helpfile.

helpfile

context

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejemplo con InputBox


36

La siguiente orden genera un cuadro al cual le indicamos texto, ttulo y asignamos el texto que escriba el usuario a la variable cadena: Dim cadena As String cadena = InputBox("Introduzca el nombre del usuario", "Identificacin") Observar que como asignamos el resultado de la funcin InputBox a una variable, debemos encerrar los argumentos entre parntesis. El resultado en ejecucin es:

Es posible separar las lneas con chr(13) y chr(10), InputBox(& chr(13)& )


Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Macro Para realizar sumas


37

Sub Sumatoria() Dim valor1 As Double Dim valor2 As Double Dim total As Double valor1 = InputBox("Ingrese el primer valor a sumar") valor2 = InputBox("Ingrese el segundo valor a sumar") total = valor1 + valor2 Range("A1") = total End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Los MsgBox
38 MsgBox: Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un tipo Integer correspondiente al botn elegido por el usuario. Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos:
Parte prompt buttons Descripcin Requerido. Cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context. Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile.

title helpfile context

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Argumento Buttons - iconos


39
Constante VbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical Valor 0 1 2 3 4 5 16 Descripcin Muestra solamente el botn Aceptar. Muestra los botones Aceptar y Cancelar. Muestra los botones Anular, Reintentar e Ignorar. Muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar. Muestra el icono de mensaje crtico.

VbQuestion
VbExclamation VbInformation

32
48 64

Muestra el icono de pregunta de advertencia.


Muestra el icono de mensaje de advertencia. Muestra el icono de mensaje de informacin.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Buttons
40
VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal 0 256 512 768 0 El primer botn es el predeterminado. El segundo botn es el predeterminado. El tercer botn es el predeterminado. El cuarto botn es el predeterminado. Aplicacin modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicacin actual. Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes. Agrega el botn Ayuda al cuadro de mensaje. Especifica la ventana del cuadro de mensaje como la ventana de primer plano. El texto se alinea a la derecha. Especifica que el texto debe aparecer para ser ledo de derecha a izquierda en sistemas hebreo y rabe.

VbSystemModal VbMsgBoxHelpButton VbMsgBoxSetForeground VbMsgBoxRight VbMsgBoxRtlReading

4096 16384 65536 524288 1048576

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejemplo
41

La siguiente orden genera un cuadro al cual le indicamos ttulo, texto, le ponemos tres botones: S, No y Cancelar. Adems le incluimos el icono de pregunta: MsgBox "Esta seguro de que quiere continuar?", vbYesNoCancel + vbQuestion, "Confirmacin" El resultado en ejecucin es:

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejercicios
42
1

Establezca y declare tres variables de tipo de dato distintas (String, Long, Date) a nivel del mdulo. Incluya un ImputBox cuyo origen sea una variable del tipo String que luego se muestre en un MsgBox con botones S y No (4) y un icono de pregunta.(32) Modifique la macro que permite realizar sumas para poder hacer multiplicaciones y haga los ajustes necesarios en el MsgBox.

Ajuste el MsgBox del punto anterior para que se muestren en el mismo mensaje los valores de cada una de las variables y su resultado.
Realice una nueva macro con ImputBox que le permita hacer la suma entre dos valores y luego multiplicarlos por un tercer valor. El resultado debe mostrarlo en un MsgBox y tambin volcarlo en alguna celda de la planilla.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Para tener en cuenta


43

Un punto que debemos tener en cuenta es la actualizacin de pantalla,

por defecto al ejecutar una macro vemos todas las acciones que se realizan, esto puede provocar confusin y prdida de tiempo, para evitarlo podremos agregar la instruccin: Application.ScreenUpdating=True

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El libro Personal (1)


44

En excel, disponemos de un libro oculto llamado personal.xls (en Excel 2007, tiene extensin xlsb, por lo que se llamar personal.xlsb), como seguramente ya conocers. Tambin sabrs seguramente, que este libro es de una gran utilidad si utilizas habitualmente los mismos macros en diferentes libros. En el libro personal.xls (o personal.xlsb, si usas Excel 2007) podemos tener almacenadas nuestras macros ms habituales, para poder utilizarlas en cualquier otro libro de excel, sin necesidad de tener que implementar el cdigo VBA en estos nuevos libros que vamos abriendo o creando. Para grabar una macro en el libro oculto personal.xls (o personal.xlsb, si usas Excel 2007), tan solo deberemos indicar en el momento de su creacin, que queremos que se almacene en el mencionado libro. Para ello, utilizaremos la grabadora de macros.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El libro Personal (2)


45 Una vez elegido el sitio donde vamos a grabar el macro, esto es, en el libro de macros personal, bien podemos detener la grabacin, o bien podemos realizar las tareas que queremos que grabe el macro. En cualquiera de los casos, una vez finalizada la grabacin del macro, si accedemos al modo VBA pulsando Alt+F11, nos encontraremos con que aparece un nuevo proyecto llamado PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007) , tal y como se muestra en la imagen:

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El libro Personal (3)


46

Dentro de la categora de Mdulos, podremos editar el cdigo del macro, borrarlo, o crear nuevos macros, y todos ellos los tendremos disponibles siempre, aunque estemos trabajando con uno, cinco, o veinte ficheros de excel diferentes. Cuando vayamos a ejecutar un macro, llamndolo desde Herramientas, Macro, Macros, nos aparecern las macros propias del libro con el cual estemos trabajando, junto con las macros grabadas en el fichero personal.xls (o personal.xlsb, si usas Excel 2007), tal y como se muestra en la siguiente imagen:

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El libro Personal (4)


47 Dos ltimas cuestiones que mencionar respecto al libro PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007): 1.- Podemos ver que realmente se trata de un fichero oculto, desde Ventana, y seleccionando Mostrar. 2.- Para grabar las macros en PERSONAL.XLS (o PERSONAL.XLSB, si usas Excel 2007), cuando cerremos excel, nos saldr un y al que tendremos que contestar con un rotundo s, si lo que deseamos es grabar esas macros en el libro oculto, para que estn disponibles siempre que las necesitemos:

Si lo que deseamos es llamar a una funcin personalizada que tengamos en el libro personal, lo haremos de esta forma (suponiendo que la funcin que hayas creado se llame mifuncion):
=PERSONAL.XLS!mifuncion()

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Construcciones Condicionales
48

Construccin IfThenElse

Con esta construccin podemos ejecutar un grupo de instrucciones dependiendo del resultado de una expresin. If condicin Then instrucciones en caso de cumplirse la condicin Else instrucciones en caso de no cumplirse la condicin. Aqu tambin es posible inclur la instruccin ElseIf que nos permitir inclur un nuevo bloque If End if

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejemplos
49

Sub Ejemplo_if() If Range(A1) = 12 Then Range(B1)=Range(A1).Value Else Range(B3)=Range(A1).Value End If End Sub

Construcciones sin instrucciones Else


If Range(A1) > 1000 Range(B1)=Range(A2) .Value+ 100 End If
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

ElseIf
Sub Operaciones_Msg() Dim valor1 As Double 50 Dim valor2 As Double Dim total As Double Dim operacion As String Dim signo As String valor1 = InputBox("Ingrese el primer valor") valor2 = InputBox("Ingrese el segundo valor") operacion = ucase(InputBox("ingrese la operacion:SUMA, RESTA, MULTIPLICA, DIVIDE")) If operacion = "SUMA" Then total = valor1 + valor2 signo = "+" ElseIf operacion = "RESTA" Then total = valor1 - valor2 signo = "-" ElseIf operacion = "MULTIPLICA" Then total = valor1 * valor2 Ucase:convierte de minus. a signo = "*" mayus. ElseIf operacion = "DIVIDE" Then Lcase :de mayusc. A minusc total = valor1 / valor2 signo = "/" End If MsgBox ("El resultado de:" & valor1 & signo & valor2 & " es: " & total) End Sub Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Al abrir un archivo
51

Private Sub Workbook_Open() Application.DisplayAlerts = False If ActiveWorkbook.ReadOnly Then MsgBox "El archivo est siendo utilizado por otro usuario, vuelva a intertarlo mas tarde, gracias", vbExclamation ActiveWorkbook.Close savechanges:=False End If End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Valores devueltos por los botones del MsgBox


52

Constante OK CANCEL ABORT RETRY IGNORE YES NO

Valor 1 2 3 4 5 6 7

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Select Case
Ejecuta uno o varios grupos de instrucciones, dependiendo del valor
53

que resulte de la condicin de prueba.


Sub uso_del_case() Dim opcion As Single opcion = InputBox("Elija una opcin") Select Case opcion Case 1 To 4 Sheets(1).Select Range("A1").Select Case 5, 6 Sheets(2).Select Range("A10").Select Case Is = 7 Sheets("Hoja3").Select Range("b15").Select Case Is > 8 MsgBox "Opcion fuera de rango", 0 + vbCritical, "Aviso" End Select End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Funciones Personalizadas
54

Este tipo de procedimientos se inclura dentro de una estructura

FunctionEnd Function, u debemos designar variables que formarn los argumentos o parmetros de esta funcin:

Function Cargas(salario As Double, tipo As Integer) If tipo = 1 Then Cargas = salario * 0.33 ElseIf tipo = 2 Then Cargas = salario * 0.25 ElseIf tipo = 3 Then Cargas = salario * 0.18 End If End Function (Se ejecuta en excel desde la barra : =cargas(c5;d5)
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Los Bucles
55

Son estructuras que nos permiten realizar

repeticiones de instrucciones Tipos de Bucles


Do While condicin instrucciones Loop
Ejecutar el bloque mientras se cumpla una determinada condicin

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

DOLOOPWHILE
56

DO WHILELOOP Sub bucledo_while() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 15 Do While condicion > 0 condicion = condicion - 1 cantidad = cantidad + 1 Loop MsgBox ("el bucle se ejectuto " & cantidad & " veces") End Sub

DOLOOP WHILE Sub bucle_do_loop_while() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 15 Do condicion = condicion - 1 cantidad = cantidad + 1 Loop While condicion > 0 MsgBox ("el bucle se ejectuto " & cantidad & " veces") End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Los Bucles
57

Do Until condicin instrucciones Loop Se ejecutar el bloque de condiciones hasta que la condicin includa tome el valor true

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

DOUNTILLOOP
58

DO UNTILLOOP Sub bucledo_until() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 0 Do Until condicion = 15 condicion = condicion + 1 cantidad = cantidad + 1 Loop MsgBox ("el bucle se ejectuto " & cantidad & " veces") End Sub

DOLOOP UNTIL Sub bucledo_loopuntil() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 0 Do condicion = condicion + 1 cantidad = cantidad + 1 Loop Until condicion = 15 MsgBox ("el bucle se ejectuto " & cantidad & " veces") End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

FORNEXT
59

Esta construccin de bucle se puede utilizar para ejecutar un grupo de

instrucciones un determinado nmero de veces. Los bucles ForNext usan una variable contador cuyo nmero se aumenta o disminuye cada vez que se ejecuta el bucle, hasta alcanzar el valor establecido en la condicin. Por defecto este bucle aumenta su valor en 1, pero es posible dar pasos mas grandes si utilizamos la instruccin Steep. Ejemplo: For i = 1 to 40 steep 2 avanza de 2 en 2

Tambin podemos ir hacia atrs For i = 40 to 1 steep -2 retrocede de 2 en 2


Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejemplo con ForNext


60

Sub bucle_for() Dim i As Integer Dim contador As Integer For i = 1 To 15 contador = contador + 1 Next i MsgBox "El bucle for se ejecut " & contador & " veces", vbInformation, "Aviso End Sub

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

For EachNext
61

Esta variante del bucle ForNext repite el grupo de instrucciones para cada uno de los objetos de una coleccin o para cada elemento de una matrz. Por ejemplo, podramos afectar a todas las celdas de un determinado rango o a todos los objetos Sheet de la coleccin Sheets. En el siguiente ejemplo recorreremos cada uno de los objetos Hojas de la coleccin worksheets, para comprobar que la celda A1 est vaca:
Sub forhojas() Dim mihoja For Each mihoja In Worksheets If mihoja.Range("g1") = "" Then mihoja.Range("g2") = "funciona?" End If Next mihoja End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Exit
62

Con esta instruccin podemos salir de un bucle y

hasta de una funcin o de un procedimiento. EXIT DO: es la instruccin para salir de un bucle DoLoop. Le transfiere el control a la instruccin siguiente a Loop. EXIT FOR: sale de un bucle ForNext o For EachNext. Le transfiere el control a la instruccin siguiente a Next. EXIT FUNCTION, EXIT SUB: nos permiten salir inmediatamente de un procedimiento o funcin
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ejemplo
63

Sub do_celdas_exit() Dim mifila Dim micol mifila = 1 micol = 1 Do Until mifila = 100 Cells(mifila, micol).Select If ActiveCell = 100 Then Exit Do End If mifila = mifila + 1 Loop

End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Input con Validacin


64

Sub validar_numero() Dim mivalor Do mivalor = InputBox("Ingrese el precio de venta del artculo: ") Loop Until IsNumeric(mivalor) [b4] = mivalor * 0.2 End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

SUMO POR COLORES


65

Function sumarporcolores(rango_suma) Dim color Dim micelda Dim suma color = ActiveCell.Interior.ColorIndex For Each micelda In rango_suma If micelda.Interior.ColorIndex = color Then sumarporcolores = sumarporcolores + micelda.Value End If Next End Function
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Ocultar todo
66

Sub ocultar_todo() Dim mihoja As Worksheet For Each mihoja In Worksheets mihoja.Visible = xlVeryHidden ' mihoja.visible=xlsheetvisible ' para mostrar On Error GoTo salida 'el libro tiene que tener por lo menos 1 hoja visible, as que se pone esta sentencia para que no d error Next mihoja salida: Exit Sub End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

LOS FORMULARIOS
67

Los formularios son ventanas o cuadros de

dilogo de VBA que pueden contener distintos controles y formularios secundarios. Permiten la interaccin entre la aplicacin y el usuario. Un formulario es un objeto Userform de la coleccin Userforms
Elegimos Men Insertar: Userform

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Formularios
68

Al insertar un formulario, se dispondr del cuadro de herramientas compuesto por un conjunto de botones de control del formulario, los que se muestra en la siguiente figura.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Formularios
69

Por debajo de la ventana de proyectos se dispondr de la Ventana de Propiedades. En esta ventana se visualizar las propiedades que posee un determinado objeto. En la siguiente imagen se muestra la ventana de propiedades de un formulario, ya que ste es el que est activo.

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Mostrar un formulario
70

Para mostrar un objeto Useform podemos utilizar los mtodos Show y Hide. De esta forma, con una macro podemos llamar a un formulario. Sub Mostrar_form() userform1.show End Sub Sub oculto_form userform1.hide End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Los controles de un Formulario


71

Haga click aqu para ver el documento Resumen de controles de Formulario

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

El Primer Formulario
72

Introducimos un Userform Modificamos el nombre con la propiedad Name y el ttulo con la propiedad Caption A modo de ejemplo incluremos un control CommandButton que al hacer clic sobre l cambie su nombre. Al hacer doble clic sobre un control, accedemos al cdigo VBA Private asignado a una determinada accin

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Mi Primer Formulario
73

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Cdigo del botn


74

Private Sub boton1_Click()


Dim nombre_actual As String Dim nombre_nuevo As String Dim nro As Integer nombre_actual = Formulario1.Caption MsgBox "El ttulo actual del formulario es " & nombre_actual nro = Right(Formulario1.Caption, 2) + 1 nombre_nuevo = "Mi Formulario " & nro Formulario1.Caption = nombre_nuevo MsgBox "El ttulo nuevo del formulario es " & nombre_nuevo End Sub
Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Procedimientos y Eventos
75

Siempre que trabajamos con formularios utilizamos macros relacionadas con eventos o acciones, ya sea al hacer un clic en un botn o desplegar una lista. Tambin es posible ejecutar macros relacionadas con eventos del formulario. Si hacemos doble clic sobre el cuerpo del formulario, accedemos al cdigo VBA relacionados con eventos del formulario

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso

Anda mungkin juga menyukai