0
Las Macros ¿qué son?
1

DESDE EL PUNTO DE VISTA GENERAL, PODEMOS DECIR
QUE LAS MACROS NOS AYUDAN A AUTOMATIZAR
TAREAS. SON...
El Lenguaje VBA
2

El lenguaje de programación de las macros Visual
Basic para Aplicaciones (VBA), es un lenguaje de
progr...
La ficha del Programador (tome nota)
3

Esta ficha de opciones es específica para interactuar
con VBA, pero no se encuentr...
La Seguridad : centro de confianza
4

 Ficha Programador: grupo código: seguridad de macros.
 Distintos grupos de opcion...
La Grabadora de Macros
5

Se guardan todas las acciones a partir del momento

en que la activamos (Grabar macro).
Los no...
Ejercicio 1
6

Creemos una macro que nos permita darle color a

algunas celdas.
Observa el código. Recordemos que nuestr...
Asignar Macros a Botones
7

Sabemos que podemos ejecutar macros, mediante el

cuadro de diálogo que se abre al presionar ...
Ejercicio 2
8

Cree una macro para eliminar la hoja actual, asígnela

a un botón de la barra de herramientas y pruebe su
...
El Editor de VBA
9

Es la herramienta de VBA que nos permite analizar,

instrucción por instrucción el código de
programa...
LAS VENTANAS
10

 Las activamos con las opciones incluidas en el menú VER
 VENTANA DE CÓDIGO

En esta se trabaja directa...
11

VENTANA LOCALES

Permiten ver los valores que poseen las “variables”
definidas dentro de una macro durante su
ejecuci...
PASO POR PASO
12
Sub desplazamiento()
NOMBRE DE LA MACRO (COMIENZA CON SUB)
'
' desplazamiento Macro
COMENTARIOS (COMIENZA...
WITH…END WITH

(tome nota)

13

 Ejecuta una serie de instrucciones sobre un ÚNICO OBJETO.

Consta de 2 partes: un objeto...
A Practicar !
14

 Agregue la ficha de opciones Programador.
 Recorra los distintos comandos incluídos en el grupo

Códi...
A Practicar!
15

Tome las macros anteriores y haga un análisis del

código, elimine líneas innecesarias.
Cree una macro ...
MÉTODOS, PROPIEDADES, OBJETOS Y
COLECCIONES
16

Hemos trabajado con diferentes objetos, como una
celda, una hoja, un libro...
Podemos definir a los EVENTOS como toda ACCIÓN que
puede ser reconocida por un objeto, por ejemplo, el clic
del mouse sobr...
Proteger la Hoja Activa
Sub protejohoja()
ActiveSheet.Protect “contraseña”
End Sub
Desproteger la Hoja Activa
Sub desprote...
MACROS POR EVENTOS
19

 EJECUTAR MACROS AL ABRIR ARCHIVOS

cuando abrimos archivos es posible ejecutar macros que
realice...
Ejecutar una macro al abrir Archivo
20

Dentro del procedimiento escribimos:
Sheets(1).Select (hace refernecia a la primer...
Último Registro - Offset
21

Supongamos que tenemos una hoja con varios datos y queremos posicionarnos
en el último para s...
Ejecutar Macros al cerrar Archivos
22

Esto lo lograremos en la ventana de código del objeto Thisworkbook,
lista desplegab...
Eventos Worksheet
23

Estos procedimientos de eventos se encuentran

relacionados con la hoja en la que se encuentra
inse...
Para tener en cuenta
24

 Conviene incluir en los métodos abreviados de ejecución de

macro la tecla MAYÚSCULA, para no r...
A Practicar!
25

Cree una macro de inicio que ajuste la visualización

de la pantalla al 75%. Puede utilizar la grabadora...
Las Variables
26

Una variable es un lugar de almacenamiento con nombre, es decir
un espacio de mem0ria que puede contener...
Las Variables
27

Para declarar variables utilizamos la instrucción Dim. Si incluímos
esta instrucción a nivel procedimien...
Tipo de Datos de Variables
28
 String: puede contener letras, nros, espacios y signos de puntuación:

Dim mivariable$ es ...
Variables
29
 Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date
 Tipo variant : Las variables de ...
Mas variables
30

 La ventana locales es fundamental cuando trabajamos con variables ya

que nos permite visualizar los v...
Constantes
31

Las constantes, como las variables, se utilizan para guardar datos y
valores para nuestro programa, pero a ...
Constantes
32

Las constantes, como las variables, se utilizan para guardar datos y
valores para nuestro programa, pero a ...
Option Explicit
33
 El Option Explicit se utiliza a nivel de módulo (sin ningún tipo de argumento

al inicio del módulo) ...
Cajas con Mensajes
34

Los InputBox
Con esta herramienta se mostrará un cuadro de diálogo en pantalla,
en el cual se podrá...
Argumentos del InputBox
35
Parte

Descripción

prompt

Requerido. Cadena que se muestra como mensaje en el cuadro de diálo...
Ejemplo con InputBox
36

La siguiente orden genera un cuadro al cual le indicamos texto, título y
asignamos el texto que e...
Macro Para realizar sumas
37

Sub Sumatoria()
Dim valor1 As Double
Dim valor2 As Double
Dim total As Double
valor1 = Input...
Los MsgBox
38
MsgBox: Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic
en un botón y devuelve...
Argumento Buttons - iconos
39
Constante

Valor

Descripción

VbOKOnly

0

Muestra solamente el botón Aceptar.

VbOKCancel
...
Buttons
40
VbDefaultButton1

0

El primer botón es el predeterminado.

VbDefaultButton2

256

El segundo botón es el prede...
Ejemplo
41

La siguiente orden genera un cuadro al cual le indicamos título, texto, le
ponemos tres botones: Sí, No y Canc...
Ejercicios
42
1

Establezca y declare tres variables de tipo de dato distintas (String, Long, Date)
a nivel del módulo.

2...
Para tener en cuenta
43

 Un punto que debemos tener en cuenta es la actualización de pantalla,

por defecto al ejecutar ...
El libro Personal (1)
44

 En excel, disponemos de un libro oculto llamado personal.xls (en Excel 2007, tiene

extensión ...
El libro Personal (2)
45
Una vez elegido el sitio donde vamos a grabar el macro, esto es, en el libro de macros
personal, ...
El libro Personal (3)
46
 Dentro de la categoría de Módulos, podremos editar el código del macro, borrarlo, o

crear nuev...
El libro Personal (4)
47
Dos últimas cuestiones que mencionar respecto al libro PERSONAL.XLS (o
PERSONAL.XLSB, si usas Exc...
Construcciones Condicionales
48

 Construcción If…Then…Else

Con esta construcción podemos ejecutar un grupo de instrucci...
Ejemplos
49

Sub Ejemplo_if()
If Range(“A1”) = 12 Then
Range(“B1”)=Range(“A1”).Value
Else
Range(“B3”)=Range(“A1”).Value
En...
ElseIf
Sub Operaciones_Msg()
Dim valor1 As Double
50
Dim valor2 As Double
Dim total As Double
Dim operacion As String
Dim ...
Al abrir un archivo
51

Private Sub Workbook_Open()
Application.DisplayAlerts = False
If ActiveWorkbook.ReadOnly Then
MsgB...
Valores devueltos por los botones del MsgBox
52

Constante

Valor

OK

1

CANCEL

2

ABORT

3

RETRY

4

IGNORE

5

YES

6...
Select Case
53

 Ejecuta uno o varios grupos de instrucciones, dependiendo del valor

que resulte de la condición de prue...
Funciones Personalizadas
54

 Este tipo de procedimientos se incluíra dentro de una estructura

Function…End Function, u ...
Los Bucles
55

Son estructuras que nos permiten realizar

repeticiones de instrucciones
Tipos de Bucles
Do While condici...
DO…LOOP…WHILE
56

DO WHILE…LOOP

DO…LOOP WHILE

Sub bucledo_while()
Dim cantidad As Integer
Dim condicion As Integer
canti...
Los Bucles
57

Do Until condición
instrucciones
Loop
Se ejecutará el bloque de condiciones hasta que la
condición incluída...
DO…UNTIL…LOOP
58

DO UNTIL…LOOP

DO…LOOP UNTIL

Sub bucledo_until()
Dim cantidad As Integer
Dim condicion As Integer
canti...
FOR…NEXT
59

 Esta construcción de bucle se puede utilizar para ejecutar un grupo de

instrucciones un determinado número...
Ejemplo con For…Next
60

Sub bucle_for()
Dim i As Integer
Dim contador As Integer
For i = 1 To 15
contador = contador + 1
...
For Each…Next
61

Esta variante del bucle For…Next repite el grupo de instrucciones para
cada uno de los objetos de una co...
Exit
62

Con esta instrucción podemos salir de un bucle y

hasta de una función o de un procedimiento.
EXIT DO: es la in...
Ejemplo
63

Sub do_celdas_exit()
Dim mifila
Dim micol
mifila = 1
micol = 1
Do Until mifila = 100
Cells(mifila, micol).Sele...
Input con Validación
64

Sub validar_numero()
Dim mivalor
Do
mivalor = InputBox("Ingrese el precio de venta del
artículo: ...
SUMO POR COLORES
65

Function sumarporcolores(rango_suma)
Dim color
Dim micelda
Dim suma
color = ActiveCell.Interior.Color...
Ocultar todo
66

Sub ocultar_todo()
Dim mihoja As Worksheet
For Each mihoja In Worksheets
mihoja.Visible = xlVeryHidden
' ...
LOS FORMULARIOS
67

Los formularios son ventanas o cuadros de

diálogo de VBA que pueden contener distintos
controles y f...
Formularios
68

Al insertar un formulario, se dispondrá del cuadro de
herramientas compuesto por un conjunto de botones de...
Formularios
69

Por debajo de la ventana de proyectos se dispondrá de la Ventana de Propiedades.
En esta ventana se visual...
Mostrar un formulario
70

Para mostrar un objeto Useform podemos utilizar
los métodos Show y Hide. De esta forma, con una
...
Los controles de un Formulario
71

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

Asoc. club de...
El Primer Formulario
72

Introducimos un Userform
Modificamos el nombre con la propiedad Name y el
título con la propiedad...
Mi Primer Formulario
73

Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
Código del botón
74

Private Sub boton1_Click()
Dim nombre_actual As String
Dim nombre_nuevo As String
Dim nro As Integer
...
Procedimientos y Eventos
75

Siempre que trabajamos con formularios utilizamos macros relacionadas
con eventos o acciones,...
Upcoming SlideShare
Loading in...5
×

Vba para excel

1,467

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,467
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
151
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Vba para excel"

  1. 1. Las Macros ¿qué son? 1 DESDE EL PUNTO DE VISTA GENERAL, PODEMOS DECIR QUE LAS MACROS NOS AYUDAN A AUTOMATIZAR TAREAS. SON PARTE DE CÓDIGO DE PROGRAMACIÓN QUE ES INTERPRETADO POR EXCEL Y LLEVA A CABO DISTINTAS ACCIONES Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  2. 2. El Lenguaje VBA 2 El lenguaje de programación de las macros Visual Basic para Aplicaciones (VBA), es un lenguaje de programación común, pero su entorno de desarrollo está plenamente integrado con las aplicaciones Microsoft Office, es decir no puede ejecutarse en forma autónoma. La forma en la que debemos guardar los archivos de Excel que contengan macros es “libros de Excel habilitados para macros”, su extensión será .XLSM Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  3. 3. La ficha del Programador (tome nota) 3 Esta ficha de opciones es específica para interactuar con VBA, pero no se encuentra disponible con la instalación básica. 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
  4. 4. La Seguridad : centro de confianza 4  Ficha Programador: grupo código: 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 código que no cumpla con estos criterios, el centro de confianza deshabilitará el código en forma automática y aparecerá un mensaje, para dejar la macro deshabilitada o habilitarla.  Configuración de ActiveX: permite habilitar o deshabilitar la utilización de estos controles (Los controles Active X son pequeños bloques empleados para la creación de programas, que se pueden usar para crear aplicaciones distribuidas que funcionen a través de Internet empleando navegadores web. Algunos ejemplos incluyen aplicaciones para la recopilación datos, para la visualización de determinados tipos de datos o para reproducir animaciones. El Malware, como los virus informáticos o el spyware, podría 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
  5. 5. 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 carácter de subrayado. No es posible incluir nombres que entren en conflicto, por ejemplo A2 Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  6. 6. Ejercicio 1 6 Creemos una macro que nos permita darle color a algunas celdas. Observa el código. Recordemos que nuestras macros comienzan por defecto con “referencias fijas”, estos podremos modificarlo activando el botón “usar referencias relativas” o borrando la línea de código que hace referencia a la selección de las celdas Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  7. 7. Asignar Macros a Botones 7 Sabemos que podemos ejecutar macros, mediante el cuadro de diálogo que se abre al presionar el comando MACROS, pero también podremos asignarles una macro a diferentes formas y objetos. LOS BOTONES DE FORMULARIO, son los preferidos, solo hay que dibujarlos y presionar la opción GRABAR. También podremos asignar una macro a una imagen, presionando el botón dcho. sobre ella, encontraremos la opción ASIGNAR MACRO Además podemos incluir nuestras macros en la barra de acceso rápido, para eso dentro de las OPCIONES DE EXCEL incluidas en el BOTÓN DE OFFICE, elegimos PERSONALIZAR Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  8. 8. Ejercicio 2 8 Cree una macro para eliminar la hoja actual, asígnela a un botón de la barra de herramientas y pruebe su funcionamiento. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  9. 9. El Editor de VBA 9 Es la herramienta de VBA que nos permite analizar, instrucción por instrucción el código de programación de las macros y realizar las modificaciones necesarias. Hay varias formas de acceder: BOTÓN VISUAL BASIC dentro de la ficha del PROGRAMADOR Botón MODIFICAR dentro del cuadro de diálogo MACRO ALT + F11 Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  10. 10. LAS VENTANAS 10  Las activamos con las opciones incluidas en el menú VER  VENTANA DE CÓDIGO En esta se trabaja directamente con el código de programación  VENTANA INMEDIATO Podemos ejecutar código VBA, si escribimos directamente la instrucción y presionamos Enter. Nos permite probar el funcionamiento de instrucciones, sin tener que ejecutar una macro en su totalidad.  VENTANA INSPECCIÓN Podemos seguir el funcionamiento de ciertas instrucciones de nuestros procedimientos si les agregamos una “inspección”. Estas expresiones de inspección se actualizan en forma automática cuando se entra en modo de “interrupción” (suspensión temporal de la ejecución de la macro). Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  11. 11. 11 VENTANA LOCALES Permiten ver los valores que poseen las “variables” definidas dentro de una macro durante su ejecución, ejecutando en modo paso a paso (F8). VENTANA EXPLORADOR DE PROYECTOS Desde aquí podremos navegar por las estructura VBA de los archivos excel que estén 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
  12. 12. PASO POR PASO 12 Sub desplazamiento() NOMBRE DE LA MACRO (COMIENZA CON SUB) ' ' 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+Mayús+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 línea 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
  13. 13. WITH…END WITH (tome nota) 13  Ejecuta una serie de instrucciones sobre un ÚNICO OBJETO. Consta de 2 partes: un objeto definido sobre el cual actuarán 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  También se podría 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
  14. 14. A Practicar ! 14  Agregue la ficha de opciones Programador.  Recorra los distintos comandos incluídos en el grupo Código  Con la grabadora, realice una macro que permita desplazarse dentro de una planilla, moviéndose 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, imágenes y barra de acceso rápido con su correspondiente ícono. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  15. 15. A Practicar! 15 Tome las macros anteriores y haga un análisis del código, elimine líneas innecesarias. Cree una macro que modifique las opciones de relleno, fuente, tamaño y color de fuente con la grabadora. Reemplace la construcción With que aparece en el código generado por las instrucciones por separado. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  16. 16. MÉTODOS, PROPIEDADES, OBJETOS Y COLECCIONES 16 Hemos trabajado con diferentes objetos, como una celda, una hoja, un libro, etc. Sobre estos objetos podemos aplicar MÉTODOS(acciones que pueden realizar los objetos). En VBA, antes de aplicar un método debemos identificar al objeto. Ej: Sub Fuente() Selection.Font.Bold = True End Sub Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  17. 17. Podemos definir a los EVENTOS como toda ACCIÓN que puede ser reconocida por un objeto, por ejemplo, el clic del mouse sobre un botón o la pulsación de alguna tecla Una COLLECIÓN es un OBJETO QUE CONTIENE VARIOS OBJETOS.Por ej: la colección de WORKBOOKS (que también 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
  18. 18. Proteger la Hoja Activa Sub protejohoja() ActiveSheet.Protect “contraseña” End Sub Desproteger la Hoja Activa Sub desprotejohoja() ActiveSheet.Unprotect “contraseña” 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 diálogo con dos fichas General y Protección, en Protección marcá la casilla de verificación “Bloquear proyecto para su visualización” y establece la contraseña. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso 18
  19. 19. MACROS POR EVENTOS 19  EJECUTAR MACROS AL ABRIR ARCHIVOS cuando abrimos archivos es posible ejecutar macros que realicen ciertas acciones en forma automática. Este tipo de macros son privadas del libro o de la hoja en cuestión y por lo tanto comienzan con la construcción 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 código y en la lista desplegable elejimos el objeto Workbook. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  20. 20. 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
  21. 21. Ú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): incluímos 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
  22. 22. Ejecutar Macros al cerrar Archivos 22 Esto lo lograremos en la ventana de código 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 presentación preliminar de una determinada selección). BeforeSave disparará la macro antes de grabar nuestro archivo. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  23. 23. Eventos Worksheet 23 Estos procedimientos de eventos se encuentran relacionados con la hoja en la que se encuentra insertado el código VBA Activate, Deactivate BeforeRightClick (presionamos el botón derecho del mouse. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  24. 24. Para tener en cuenta 24  Conviene incluir en los métodos abreviados de ejecución de macro la tecla MAYÚSCULA, para no reemplazar una atajo de excel, quedaría CTRL + MAYÚSCULA + Carácter  Para salir del editor de VBA podemos utilizar ALT + Q  Para ejecutar una macro en forma automática cuando se abre el archivo, debemos incluir el código VBA dentro del objeto THISWORKBOOK  Si deseamos que la macro siempre esté disponible, para que se pueda cargar en forma automática al abrir Excel debemos guardarla en c:Documents ad SettingsDatos de ProgramaMicrososftExcelXLSTART  Para modificar las característcas del Editor vamos al menú Herramientas/Opciones… Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  25. 25. A Practicar! 25 Cree una macro de inicio que ajuste la visualización de la pantalla al 75%. Puede utilizar la grabadora para generar las líneas de código y luego incorporarla al Thisworkbook Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  26. 26. 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 ejecución de la macro. Declaración de Variables El nombre de las variables debe ser único y no contener más de 255 caracteres. Es recomendable declarar las variables y distinguir tres situaciones: Procedimiento: la variable que declaremos dentro de un procedimiento, Sub o Function Módulo: serán declaradas fuera de cualquier procedimiento y son válidas en todo el módulo. Pública: las variables que declaremos mediante la instrucción Public estarán disponibles para todos los procedimientos en todos los módulos de todas las macros. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  27. 27. Las Variables 27 Para declarar variables utilizamos la instrucción Dim. Si incluímos esta instrucción a nivel procedimiento, solo tendrá efecto en la macro en cuestión. Ej: Dim variable1 as string Dim variable2 as boolean Si queremos utilizar las variables para distintas macros podemos definirlas en la sección Declaraciones de la ventana código y así lograr que tengan validez en todo el módulo Si queremos que sea pública: Public variable1 as string Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  28. 28. Tipo de Datos de Variables 28  String: puede contener letras, nros, espacios y signos de puntuación: Dim mivariable$ es igual a  Dim mivariable as string * 20 (20 caracteres de espacio) Boolean: True o False ( si se convierte a numérico el 0 es false, 1 es true)  Números enteros: dentro de los números enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar:  Byte: puede almacenar números enteros dentro del rango desde 0 a 255  Integer: puede almacenar números enteros dentro del rango -32.768 a 32.767 (se puede declarar con el signo %)  Long: puede almacenar números enteros dentro del rango -2.147.483.648 hasta 2.147.483.648 . (se puede declarar con el signo &)  Currency: útil para cálculos monetarios. (se puede declarar con el signo @)  Números decimales: para almacenar números decimales contamos con los siguientes tipos de datos:  Single: almacena números 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
  29. 29. 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
  30. 30. Mas variables 30  La ventana locales es fundamental cuando trabajamos con variables ya que nos permite visualizar los valores que toman. Públicas, privadas y estáticas La instrucción Public nos permite declarar variables que se utilizan en cualquier procedimiento de un proyecto Public mivariable as integer Private: (equivalente a utilizar Dim) sólo podrán ser utilizadas a nivel del mismo módulo Private mivariable as variant Static: mantendrá su valor entre las distintas llamadas hasta que se reinicie el módulo Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  31. 31. 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 línea anterior he creado una constante, que la llamé numero y va a almacenar un número , y este valor, cuando se ejecute mi programa se mantendrá invariable. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  32. 32. 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 línea anterior he creado una constante, que la llamé numero y va a almacenar un número , y este valor, cuando se ejecute mi programa se mantendrá invariable. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  33. 33. Option Explicit 33  El Option Explicit se utiliza a nivel de módulo (sin ningún tipo de argumento al inicio del módulo) para forzar la declaración explícita de todas las variables en este módulo. Esta declaración debe aparecer en la parte superior del módulo, antes de cualquier procedimiento.  Cuando esta declaración se usa, un mensaje de error identifica cualquier variable no definida o mal escrita. Para que Option Explicit se inserte automáticamente en cada nuevo libro: Ir a la barra del menú del editor de macros. Menú Herramientas Opciones En la ficha Editor, marca "Requerir declaración de variables". Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  34. 34. Cajas con Mensajes 34 Los InputBox Con esta herramienta se mostrará un cuadro de diálogo 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 función InputBox consta de estos argumentos: (Si deseamos omitir algunos argumentos de posición, debemos incluir el delimitador de coma correspondiente). Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  35. 35. Argumentos del InputBox 35 Parte Descripción prompt Requerido. Cadena que se muestra como mensaje en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación. default Opcional. Expresión 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 vacío. xpos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se centra horizontalmente. ypos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de diálogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de diálogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utilizará para proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica helpfile, también deberá especificarse context. context Opcional. Expresión numérica que es el número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también deberá especificarse helpfile. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  36. 36. Ejemplo con InputBox 36 La siguiente orden genera un cuadro al cual le indicamos texto, título y asignamos el texto que escriba el usuario a la variable cadena: Dim cadena As String cadena = InputBox("Introduzca el nombre del usuario", "Identificación") Observar que como asignamos el resultado de la función InputBox a una variable, debemos encerrar los argumentos entre paréntesis. El resultado en ejecución es: Es posible separar las líneas con chr(13) y chr(10), InputBox(“…”& chr(13)& “…”) Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  37. 37. 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
  38. 38. Los MsgBox 38 MsgBox: Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario. Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la función MsgBox consta de estos argumentos: Parte Descripción prompt Requerido. Cadena que representa el prompt en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. buttons Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación. helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se especifica helpfile, también se debe especificar context. context Opcional. Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también se debe especificar helpfile. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  39. 39. Argumento Buttons - iconos 39 Constante Valor Descripción VbOKOnly 0 Muestra solamente el botón Aceptar. VbOKCancel 1 Muestra los botones Aceptar y Cancelar. VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar. VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar. VbYesNo 4 Muestra los botones Sí y No. VbRetryCancel 5 Muestra los botones Reintentar y Cancelar. VbCritical 16 Muestra el icono de mensaje crítico. VbQuestion 32 Muestra el icono de pregunta de advertencia. VbExclamation 48 Muestra el icono de mensaje de advertencia. VbInformation 64 Muestra el icono de mensaje de información. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  40. 40. Buttons 40 VbDefaultButton1 0 El primer botón es el predeterminado. VbDefaultButton2 256 El segundo botón es el predeterminado. VbDefaultButton3 512 El tercer botón es el predeterminado. VbDefaultButton4 768 El cuarto botón es el predeterminado. VbApplicationModal 0 Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual. VbSystemModal 4096 Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes. VbMsgBoxHelpButton 16384 Agrega el botón Ayuda al cuadro de mensaje. VbMsgBoxSetForeground 65536 Especifica la ventana del cuadro de mensaje como la ventana de primer plano. VbMsgBoxRight 524288 El texto se alinea a la derecha. VbMsgBoxRtlReading 1048576 Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  41. 41. Ejemplo 41 La siguiente orden genera un cuadro al cual le indicamos título, texto, le ponemos tres botones: Sí, No y Cancelar. Además le incluimos el icono de pregunta: MsgBox "¿Esta seguro de que quiere continuar?", vbYesNoCancel + vbQuestion, "Confirmación" El resultado en ejecución es: Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  42. 42. Ejercicios 42 1 Establezca y declare tres variables de tipo de dato distintas (String, Long, Date) a nivel del módulo. 2 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) 3 Modifique la macro que permite realizar sumas para poder hacer multiplicaciones y haga los ajustes necesarios en el MsgBox. 4 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. 5 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 también volcarlo en alguna celda de la planilla. Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  43. 43. Para tener en cuenta 43  Un punto que debemos tener en cuenta es la actualización de pantalla, por defecto al ejecutar una macro vemos todas las acciones que se realizan, esto puede provocar confusión y pérdida de tiempo, para evitarlo podremos agregar la instrucción: Application.ScreenUpdating=True Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  44. 44. El libro Personal (1) 44  En excel, disponemos de un libro oculto llamado personal.xls (en Excel 2007, tiene extensión xlsb, por lo que se llamará personal.xlsb), como seguramente ya conocerás. También sabrás 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 más habituales, para poder utilizarlas en cualquier otro libro de excel, sin necesidad de tener que implementar el código 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 creación, 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
  45. 45. 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 grabación, o bien podemos realizar las tareas que queremos que grabe el macro. En cualquiera de los casos, una vez finalizada la grabación 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
  46. 46. El libro Personal (3) 46  Dentro de la categoría de Módulos, podremos editar el código 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, llamándolo desde Herramientas, Macro, Macros…, nos aparecerán 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
  47. 47. 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 estén disponibles siempre que las necesitemos: Si lo que deseamos es llamar a una función personalizada que tengamos en el libro personal, lo haremos de esta forma (suponiendo que la función que hayas creado se llame mifuncion): =PERSONAL.XLS!mifuncion() Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  48. 48. Construcciones Condicionales 48  Construcción If…Then…Else Con esta construcción podemos ejecutar un grupo de instrucciones dependiendo del resultado de una expresión. If condición Then instrucciones en caso de cumplirse la condición Else instrucciones en caso de no cumplirse la condición. Aquí también es posible incluír la instrucción ElseIf que nos permitirá incluír un nuevo bloque If End if Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  49. 49. 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
  50. 50. 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
  51. 51. 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
  52. 52. Valores devueltos por los botones del MsgBox 52 Constante Valor OK 1 CANCEL 2 ABORT 3 RETRY 4 IGNORE 5 YES 6 NO 7 Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  53. 53. Select Case 53  Ejecuta uno o varios grupos de instrucciones, dependiendo del valor que resulte de la condición de prueba. Sub uso_del_case() Dim opcion As Single opcion = InputBox("Elija una opción") 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
  54. 54. Funciones Personalizadas 54  Este tipo de procedimientos se incluíra dentro de una estructura Function…End Function, u debemos designar variables que formarán los argumentos o parámetros de esta función: 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
  55. 55. Los Bucles 55 Son estructuras que nos permiten realizar repeticiones de instrucciones Tipos de Bucles Do While condición instrucciones Loop Ejecutará el bloque mientras se cumpla una determinada condición Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  56. 56. DO…LOOP…WHILE 56 DO WHILE…LOOP DO…LOOP WHILE Sub bucledo_while() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 15 Sub bucle_do_loop_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 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
  57. 57. Los Bucles 57 Do Until condición instrucciones Loop Se ejecutará el bloque de condiciones hasta que la condición incluída tome el valor true Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  58. 58. DO…UNTIL…LOOP 58 DO UNTIL…LOOP DO…LOOP UNTIL Sub bucledo_until() Dim cantidad As Integer Dim condicion As Integer cantidad = 0 condicion = 0 Sub bucledo_loopuntil() 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 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
  59. 59. FOR…NEXT 59  Esta construcción de bucle se puede utilizar para ejecutar un grupo de instrucciones un determinado número de veces. Los bucles For…Next usan una variable contador cuyo número se aumenta o disminuye cada vez que se ejecuta el bucle, hasta alcanzar el valor establecido en la condición.  Por defecto este bucle aumenta su valor en 1, pero es posible dar pasos mas grandes si utilizamos la instrucción Steep. Ejemplo: For i = 1 to 40 steep 2 avanza de 2 en 2 También podemos ir hacia atrás For i = 40 to 1 steep -2 retrocede de 2 en 2 Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  60. 60. Ejemplo con For…Next 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
  61. 61. For Each…Next 61 Esta variante del bucle For…Next repite el grupo de instrucciones para cada uno de los objetos de una colección o para cada elemento de una matríz. Por ejemplo, podríamos afectar a todas las celdas de un determinado rango o a todos los objetos Sheet de la colección Sheets. En el siguiente ejemplo recorreremos cada uno de los objetos Hojas de la colección worksheets, para comprobar que la celda A1 esté vacía: 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
  62. 62. Exit 62 Con esta instrucción podemos salir de un bucle y hasta de una función o de un procedimiento. EXIT DO: es la instrucción para salir de un bucle Do…Loop. Le transfiere el control a la instrucción siguiente a Loop. EXIT FOR: sale de un bucle For…Next o For Each… Next. Le transfiere el control a la instrucción siguiente a Next. EXIT FUNCTION, EXIT SUB: nos permiten salir inmediatamente de un procedimiento o función Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  63. 63. 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
  64. 64. Input con Validación 64 Sub validar_numero() Dim mivalor Do mivalor = InputBox("Ingrese el precio de venta del artículo: ") Loop Until IsNumeric(mivalor) [b4] = mivalor * 0.2 End Sub Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  65. 65. 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
  66. 66. 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
  67. 67. LOS FORMULARIOS 67 Los formularios son ventanas o cuadros de diálogo de VBA que pueden contener distintos controles y formularios secundarios. Permiten la interacción entre la aplicación y el usuario. Un formulario es un objeto Userform de la colección Userforms Elegimos Menú Insertar: Userform Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  68. 68. 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
  69. 69. 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
  70. 70. Mostrar un formulario 70 Para mostrar un objeto Useform podemos utilizar los métodos 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
  71. 71. 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
  72. 72. El Primer Formulario 72 Introducimos un Userform Modificamos el nombre con la propiedad Name y el título con la propiedad Caption A modo de ejemplo incluíremos un control CommandButton que al hacer clic sobre él cambie su nombre. Al hacer doble clic sobre un control, accedemos al código VBA Private asignado a una determinada acción Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  73. 73. Mi Primer Formulario 73 Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  74. 74. Código del botón 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 título actual del formulario es " & nombre_actual nro = Right(Formulario1.Caption, 2) + 1 nombre_nuevo = "Mi Formulario " & nro Formulario1.Caption = nombre_nuevo MsgBox "El título nuevo del formulario es " & nombre_nuevo End Sub Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  75. 75. Procedimientos y Eventos 75 Siempre que trabajamos con formularios utilizamos macros relacionadas con eventos o acciones, ya sea al hacer un clic en un botón o desplegar una lista. También es posible ejecutar macros relacionadas con eventos del formulario. Si hacemos doble clic sobre el cuerpo del formulario, accedemos al código VBA relacionados con eventos del formulario Asoc. club de Programadores -Macros-VBA - Lic. Carina V. Grosso
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×