Upload
rosalinda-hernandez-sanchez
View
234
Download
0
Embed Size (px)
Citation preview
8/9/2019 Visual Basic Para Aplicaciones VBA
1/86
Visual Basic para AplicacionesVBA 2013
2014
MICROSOFT EXCEL 2013ROSALINDA HERNÁNDEZ
[NOMBRE DE LA COMPAÑÍA] | [Dirección de la compañía]
8/9/2019 Visual Basic Para Aplicaciones VBA
2/86
Tabla de contenidoClase 1 - Módulos ............................................................................................................................................... 4
Insertar .......................................................................................................................................................... 4
Renombrar .................................................................................................................................................... 5
Eliminar.......................................................................................................................................................... 6
Procedimientos .................................................................................................................................................. 7 Objetos y Colecciones ........................................................................................................................................ 9
Objetos .......................................................................................................................................................... 9
Colecciones .................................................................................................................................................. 10
Referencias a Objetos ...................................................................................................................................... 11
Clase 2 - Propiedades y Métodos..................................................................................................................... 12
Propiedades ................................................................................................................................................. 12
Métodos ...................................................................................................................................................... 13 Comment ......................................................................................................................................................... 15
El Objeto Comment en Excel ....................................................................................................................... 15
Propiedades del Objeto Comment .............................................................................................................. 16
Métodos del Objeto Comment ................................................................................................................... 16
La colección del Objeto Comment .............................................................................................................. 17
Ejemplo del método “Text” del Objeto Comments .................................................................................... 17
Ejemplo de la propiedad “Count” del Objeto Comments ........................................................................... 18
Ejemplo de la propiedad “Parent” del Objeto Comments .......................................................................... 18
Ejemplo del recorrido de todos los comentarios del Objeto Comment ..................................................... 19
Comment como una propiedad del Objeto Range ..................................................................................... 20
Objetos dentro de un Objeto Comment ..................................................................................................... 21
Mensaje de error cuando no hay un comentario en la celda y cómo resolverlo ...................................... 22
Caso práctico 1 – Buscar comentarios ............................................................................................................. 23
Qué usaremos ............................................................................................................................................. 23
Escribimos código ........................................................................................................................................ 26
Clase 3 – Obtener un Objeto Range ................................................................................................................. 32
Concepto clave – Maneras de obtener un Objeto Range ........................................................................... 32
Objeto Range que se genera empleando la Propiedad Range ................................................................... 32
Sobre un Objeto Worksheet ................................................................................................................................... 33
Sobre un Objeto Range ........................................................................................................................................... 34
Objeto Range que se genera empleando la Propiedad Cells ...................................................................... 35
Objeto Range que se genera empleando la Propiedad Offset ................................................................... 36
Clase 4 – Elementos del lenguaje VBA parte 1 ................................................................................................ 37
Palabras claves y estructuras de control ..................................................................................................... 37
8/9/2019 Visual Basic Para Aplicaciones VBA
3/86
Comentarios ................................................................................................................................................ 38
Variables ...................................................................................................................................................... 39
Tipos de datos de las variables ............................................................................................................................... 39
Reglas para los nombres de las Variables ............................................................................................................... 40
Declaración de variables ......................................................................................................................................... 41
Declarar una variable normal genéricamente ........................................................................................................ 42
Clase 5 – Elementos del lenguaje VBA parte 2 ................................................................................................ 43
¿Dónde se declara la variable? ................................................................................................................... 43
Ámbito Local ........................................................................................................................................................... 43
A nivel de un módulo .............................................................................................................................................. 44
Pública ..................................................................................................................................................................... 45
Clase 6 – Elementos del lenguaje VBA parte 3 ................................................................................................ 46
Constantes ................................................................................................................................................... 46
¿Por qué declarar constantes? ............................................................................................................................... 46
Constantes locales .................................................................................................................................................. 47
Constantes a nivel de un módulo ............................................................................................................................ 47
Constantes públicas ................................................................................................................................................ 47
Constantes internas de VBA ........................................................................................................................ 48
Función interna MsgBox ......................................................................................................................................... 48
Clase 7 – Elementos del lenguaje VBA parte 4 ................................................................................................ 51
Cadenas de texto ......................................................................................................................................... 51 Trabajar con fechas ..................................................................................................................................... 52
Clase 8 – Elementos del lenguaje VBA parte 5 ................................................................................................ 53
Expresiones ................................................................................................................................................. 53
Instrucciones de asignación ........................................................................................................................ 54
Operadores .................................................................................................................................................. 55
Clase 9 – Elementos del lenguaje VBA parte 6 ................................................................................................ 57
Arreglos – Arrays ......................................................................................................................................... 57 Conceptos generales ............................................................................................................................................... 57
Vectores y Matrices .................................................................................................................................... 57
Declaración ............................................................................................................................................................. 57
Ejemplo: especificando el índice en un vector ....................................................................................................... 58
Ejemplo: empleando un bucle en un vector ........................................................................................................... 58
Ejemplo: empleando un bucle en una matriz ......................................................................................................... 59
Ejemplo: especificando de forma automática y específica el límite inferior .......................................................... 59
Arreglos dinámicos ...................................................................................................................................... 60
Algunas funciones para trabajar con arreglos ............................................................................................ 62
Clase 10 – Elementos del lenguaje VBA parte 7 .............................................................................................. 63
8/9/2019 Visual Basic Para Aplicaciones VBA
4/86
Variables de objeto ..................................................................................................................................... 63
Declaración de una variable de objeto ................................................................................................................... 63
Variables de objeto genéricas ................................................................................................................................. 64
Asignar objetos a las variables de objeto................................................................................................................ 64
Para agregar un elemento a una colección ............................................................................................................. 67
Para eliminar un elemento de una colección ......................................................................................................... 67
Para eliminar todos los elementos de una colección ............................................................................................. 67
Para recuperar un elemento de una colección ....................................................................................................... 67
Clase 11 – Elementos del lenguaje VBA parte 8 .............................................................................................. 68
Tipos de datos personalizados o definidos por el usuario .......................................................................... 68
Estructura ................................................................................................................................................................ 68
Declaración y uso .................................................................................................................................................... 68
Tipos de datos personalizados y matrices .............................................................................................................. 69
Clase 12 – Elementos del lenguaje VBA parte 9 .............................................................................................. 70
Funciones integradas .................................................................................................................................. 70
Concepto general de Función ................................................................................................................................. 70
Interrelación entre las funciones de la hoja de cálculo y las funciones VBA .......................................................... 70
Llamar a una función de hoja de cálculo desde Visual Basic – Funciones no equivalentes ................................... 71
Clase 13 – Estructuras de control parte 1 ........................................................................................................ 72
Construcción With – End Width .................................................................................................................. 72
Clase 14 – Estructuras de control parte 2 ........................................................................................................ 74 Construcción For Each - Next ...................................................................................................................... 74
Clase 15 – Estructuras de control parte 3 ........................................................................................................ 78
Construcción GoTo ...................................................................................................................................... 78
Clase 16 – Estructuras de control parte 4 ........................................................................................................ 81
Construcción If…Then…Else ........................................................................................................................ 81
8/9/2019 Visual Basic Para Aplicaciones VBA
5/86
Clase 1 - Módulos
8/9/2019 Visual Basic Para Aplicaciones VBA
6/86
Para RENOMBRAR un módulo debemos seleccionar el módulo y tener abierto la ventana de Propiedades:
8/9/2019 Visual Basic Para Aplicaciones VBA
7/86
Para ELIMINAR un módulo:
8/9/2019 Visual Basic Para Aplicaciones VBA
8/86
Procedimientos
Dos tipos de procedimientos:
a. Subrutinas
b. Funciones
En la función se devuelve un ÚNICO valor en una variable que tiene el MISMO NOMBRE que la función. Se
puede llamar desde otro procedimiento
En la subrutina puede haber varias variables.
Creamos un módulo llamado “Procedimientos” y dentro de él escribimos nuestros dos procedimientos del
ejemplo:
8/9/2019 Visual Basic Para Aplicaciones VBA
9/86
La ventana Inmediato (Ctrl-G), permite ejecutar directamente funciones Visual Basic, probar instrucciones y
depurar código. Los procedimientos se prueban escribiendo su nombre y las funciones hay que escribir “?”
seguido del nombre de la función con los parámetros que se le asocia:
En el Excel las funciones generadas por el usuario aparecen:
8/9/2019 Visual Basic Para Aplicaciones VBA
10/86
Objetos y Colecciones
Los objetos están organizados en jerarquía, Un LIBRO contiene varias HOJAS y cada hoja puede contenergráficos, rango de datos, tablas dinámicas,… Los objetos en Excel (VBA) son cosas. Una celda es un
objeto, una hoja es un objeto, un libro es un objeto y de esta manera existen muchos más objetos
en Excel. A esto lo conocemos como el modelo de objetos de Excel.
8/9/2019 Visual Basic Para Aplicaciones VBA
11/86
8/9/2019 Visual Basic Para Aplicaciones VBA
12/86
Referencias a Objetos
8/9/2019 Visual Basic Para Aplicaciones VBA
13/86
Clase 2 - Propiedades y Métodos
En una hoja de cálculo el valor de una celda es una propiedad y podemos cambiar su valor y también
mostrarlo, a continuación el procedimiento VBA:
8/9/2019 Visual Basic Para Aplicaciones VBA
14/86
Los métodos son las actividades o acciones que el objeto puede realizar. Siguiendo con el ejemplo
de una persona, si fuera un objeto de Excel sus métodos serían correr, caminar, hablar, dormir. Los
objetos de Excel se comportan de la misma manera que el ejemplo de una persona. Una celda
(Range) tiene los métodos activar ( Activate), calcular (Calculate), borrar (Clear ) entre muchos más.
Recuerda, los objetos son cosas en Excel y sus características las
llamamos propiedades las cuales nos ayudan a definir al objeto.
Los métodos son las acciones que cada objeto puede realizar.
8/9/2019 Visual Basic Para Aplicaciones VBA
15/86
Ejemplo:
En la hoja de cálculo
En VBA
Cuando se ejecuta el
procedimiento, la
hoja de cálculo
queda así:
Ejemplo:
En VBA
Cuando se ejecuta el procedimiento, la hoja de
cálculo queda así:
8/9/2019 Visual Basic Para Aplicaciones VBA
16/86
Comment
8/9/2019 Visual Basic Para Aplicaciones VBA
17/86
8/9/2019 Visual Basic Para Aplicaciones VBA
18/86
8/9/2019 Visual Basic Para Aplicaciones VBA
19/86
8/9/2019 Visual Basic Para Aplicaciones VBA
20/86
8/9/2019 Visual Basic Para Aplicaciones VBA
21/86
8/9/2019 Visual Basic Para Aplicaciones VBA
22/86
8/9/2019 Visual Basic Para Aplicaciones VBA
23/86
8/9/2019 Visual Basic Para Aplicaciones VBA
24/86
Caso práctico 1 – Buscar comentarios
En Excel
8/9/2019 Visual Basic Para Aplicaciones VBA
25/86
En VBA, insertamos un Formulario y un Módulo, les cambiamos el nombre
Cambiamos las propiedades del formulario:
8/9/2019 Visual Basic Para Aplicaciones VBA
26/86
Insertamos controles de formularios de etiquetas, cuadros de texto y botones de comando y los
personalizamos, tal y como se muestra en la figura de abajo:
8/9/2019 Visual Basic Para Aplicaciones VBA
27/86
La primera línea de código:
Cambia el valor de la propiedad “Caption” de la etiqueta “lblNombreHoja” por el valor que
tiene la hoja de cálculo activa al momento de ejecutar el procedimiento.
La segunda línea de código:
Muestra en pantalla el formulario“frmBusquedaComentarios”.
Si se ejecuta
La primera línea de código:
Borra el contenido del objeto “txtBusqueda” que es un cuadro de texto.
La segunda línea de código:
Emplea el método “Clear” del control cuadro de lista para limpiar el contenido
Ahora otro procedimiento:
8/9/2019 Visual Basic Para Aplicaciones VBA
28/86
Verificamos si la colección Comments de la HOJA ACTIVA (es genérico, no especifica una hoja
en particular) está vacía y en caso de afirmación enviamos un cuadro de mensaje indicando
tal hecho. Este mensaje presentará un solo botón, el de “Aceptar” dado por el parámetro vbOKonly
El parámetro vbInformation es utilizado para mandar un “mensaje informativo”.
Se verifica si la caja de texto está vacía
Se inicializan las variables con valores vacíos y 0 para borrar el contenido de las variables.
Se limpian los elementos del control de caja de lista.
8/9/2019 Visual Basic Para Aplicaciones VBA
29/86
Se asigna el contenido de la caja de texto a la variable “TextoBuscado”.
For Each – NextSirve para recorrer TODOS los comentarios de la hoja de cálculo activa.
Se le asigna a una variable el contenido del comentario, utilizamos el método Text del Objeto
Comment que está asignado en este momento a la variable “Comentario” que devuelve el
contenido de texto de cada comentario de la hoja activa
Se emplea la función InSTR que tiene como parámetros lo que se busca y en dónde se busca,
retorna la posición del carácter en dónde fue encontrado el texto a buscar, es decir, si se
devuelve un número >= 1 quiere decir que se ha encontrado.
Si se ha encontrado, añadimos un elemento nuevo el cuadro de control de lista empleando el
método AddItem, este método recibe un argumento opcional que es la referencia de celda
de donde está el comentario
Empleamos la propiedad List de un control de caja de listas para especificar en qué lugar de
fila y columna se agrega el texto del comentario.
Sumamos uno a la variable que nos permite recorrer las filas del control de lista.
Volvemos a inicializar la variable del texto que se busca antes de proceder a repetir el ciclo.
8/9/2019 Visual Basic Para Aplicaciones VBA
30/86
Al terminar el ciclo de revisión de los comentarios, se verifica si no se ha encontrado ninguno
o si por lo menos se encontró uno, mandando mensajes de información según el caso.
La palabra clave vbCrLf se emplea para introducir un retorno de carro en el texto impreso en
pantalla.
El símbolo & para concatenar texto y/o variables.
El símbolo _ para ingresar un retorno de línea en el editor de visual basic.
8/9/2019 Visual Basic Para Aplicaciones VBA
31/86
Para enganchar los procedimientos escritos a los controles de los botones de comandos del formulario,
debemos estar pendiente de elegir el evento apropiado:
cmdBuscar, cmdLimpiar y cmdSalir son los nombres de los 3 botones de comando que tenemos en nuestro
formulario, click es el evento.
Los procedimientos BotonBuscar y LimpiarFormulario son los procedimientos a los que hemos escrito el
código.
El comando Unload descarga de la memoria el formulario cuando el usuario no lo quiera usar más
Ahora debemos asignar las macros a los rectángulos o botones que hemos colocado en nuestras hojas de
cálculo para que cuando se realice clic sobre ellos se ejecuten los códigos programados, para ello realizamos
clic derecho sobre cada uno y elegimos la opción Asignar macro:
8/9/2019 Visual Basic Para Aplicaciones VBA
32/86
8/9/2019 Visual Basic Para Aplicaciones VBA
33/86
Clase 3 – Obtener un Objeto Range
8/9/2019 Visual Basic Para Aplicaciones VBA
34/86
Sobre un Objeto Worksheet
La primera sintaxis identifica a una sola celda por medio de Cell1:
Visual Basic para Aplicaciones utiliza las propiedades por defecto de cada objeto cuando no se indican, por
ejemplo asume el Libro de trabajo activo ActiveWorkbook, la Hoja activa ActiveSheet y la propiedad Value
porque el objeto que se creará es de tipo Range y ese es la propiedad por defecto.
Range(“D1:E10 _B2:F2”) usa el operador de intersección de Excel, es un espacio que devuelve la intersección
de dos rangos, la intersección serán dos celdas D2 y E2.
Range(“F3,F5,F7,F9”) es un rango de celdas no continuas, la , sirve de unión. Hay una sola declaración deceldas porque únicamente hay un par de comillas que envuelven las declaraciones de cada una de las celdas
involucradas que son tratadas como unidades independientes.
La segunda sintaxis define un rango de celdas dados por los parámetros Cell1 que representa la celda de la
parte superior izquierda del rango y Cell2 que representa la celda de la parte inferior derecha del mismo
rango. Hay dos pares de comillas, una para cada celda extremo del rango:
Se identifica a una sola celda
Se hace alusión a un rango de celdas definidas por un NOMBRE
8/9/2019 Visual Basic Para Aplicaciones VBA
35/86
Sobre un Objeto Range
El resultado de un Range en un objeto SIEMPRE es UNA CELDA
El segundo “Range” siempre serán CELDAS RELATIVAS según el Objeto Range que se origina. O sea:
Range(“G2:I10”) da como resultado G2, comportándose como la primera celda de la hoja de cálculo
Range(“A2:B9”) da como resultado G3:H10
8/9/2019 Visual Basic Para Aplicaciones VBA
36/86
*-- Estas instrucciones se emplean más que todo en bucles --*
Primera sintaxis
Tiene dos argumentos de posición: índice de fila e índice de columna.
Segunda sintaxis
Tiene un único argumento: índice de fila. Tiene un único argumento, el número máximo es el total de celdas
que existen en una hoja de cálculo de Excel, comienza desde la celda A1 y sigue hacia la derecha y después
continúa hacia la siguiente fila.
Fila 2, Columna 10. Es la J2 Fila 3, Columna 10. Es la J3 Posición relativa desde J2 se desplaza 3-1 filas Posición relativa la fila 5 con columna 10 es el origen
HASTA la fila 10 con columna10 J5:J10
Se le asigna una cadena de texto a la celda K2 El índice 1 representaría a la celda A1 de una hoja de
cálculo, por lo tanto en el rango que se muestra tomamos
a K3 como el origen y se le asigna el número 456
8/9/2019 Visual Basic Para Aplicaciones VBA
37/86
Tercera sintaxis
Devuelve TODAS las celdas de la hoja o del rango a la cual se hace referencia, por lo tanto el Objeto Range
devuelto es un rango con múltiples celdas.
Los argumentos pueden ser positivos o negativos. Lo que se trata es que se avanza o retrocede en filas y/o
columnas según los valores.
Se borra el contenido del rango A1 hasta E9
Se borran el contenido de TODAS las celdas
A partir de la celda C2 se avanza tres filas hacia abajo ydos columnas a la derecha E5
8/9/2019 Visual Basic Para Aplicaciones VBA
38/86
Clase 4 – Elementos del lenguaje VBA parte 1
Emplearemos : para escribir otra instrucción en la misma línea:
Emplearemos _ para seguir la instrucción en la siguiente línea:
Comentarios Declaración de variables Inicialización de variables Bucle Instrucción de asignación Fin del bucle Función interna
8/9/2019 Visual Basic Para Aplicaciones VBA
39/86
Emplearemos ‘ para escribir un comentario en la misma línea o en una nueva:
Emplearemos Rem al comienzo de la línea para escribir un comentario:
Podemos convertir un bloque de instrucciones encomentarios simplemente seleccionando las líneas de
código y yendo a la barra de herramienta de Edición y
realizando clic en el icono de Bloque con comentarios.
8/9/2019 Visual Basic Para Aplicaciones VBA
40/86
Tipos de datos de las variables
8/9/2019 Visual Basic Para Aplicaciones VBA
41/86
Reglas para los nombres de las Variables
8/9/2019 Visual Basic Para Aplicaciones VBA
42/86
Declaración de variables
El tipo de datos Decimal no se puede declarar. Se debe declarar la
variable de tipo Variant y asignarle el valor decimal y por último
convertirla a tipo “decimal” empleando la función CDec(variable).
Para obligar a que se declaren las variables debemos de:
Nos muestra el tipo de datos de la variable “peso”
Variable con contenido String Variable con contenido Integer Variable que se vuelve a convertir a String
Variable con contenido String Variable con contenido String, “+” sirve de concatenado Variable con contenido String
8/9/2019 Visual Basic Para Aplicaciones VBA
43/86
Asignación de valores a las variables:
Declarar una variable normal genéricamente
8/9/2019 Visual Basic Para Aplicaciones VBA
44/86
Clase 5 – Elementos del lenguaje VBA parte 2
Ámbito Local
En los ámbitos locales, Visual Basic borra la memoria cuando se finaliza cada procedimiento y las variables
se destruyen, por eso se puede declarar el mimo nombre de variable en distintos procedimientos.
A pesar de que no se inicialice en algúnvalor, la variable “Resultado” SIEMPRE sepone a 0 cuando se ejecuta elprocedimiento porque está declaradacomo un valor numérico.
Con la instrucción Dim se pueden declararvarias variables dentro de la mismainstrucción pero si no se especifica a cadauna su tipo sólo la última variable es la quese le asocia el tipo de datos, las restantesson Variant.
Manera correcta de declarar las variables.Cada una asociada a su tipo de datos.
8/9/2019 Visual Basic Para Aplicaciones VBA
45/86
A nivel de un módulo
Cuando se declara una variable con la palabra claveStatic en vez de Dim no sedestruye su información cuando el procedimiento acaba.
Si queremos que una variable Static pierda su valor, debemos forzar lafinalización del procedimiento agregando la instrucción End antes del cierrenormal de dicho procedimiento.
Podemos emplear la instrucción Dim o Private para declarar variables. Normalmentepara comprensión y mejor lectura del código se emplea Dim para declaración enámbitos locales y Private para declaración en ámbito a nivel de módulo.
Al igual que la instrucción Static, las variables declaradas con Private no borran suinformación cuando se finaliza el procedimiento de forma normal únicamente cuandose produce un error o el procedimiento es obligado a finalizar
8/9/2019 Visual Basic Para Aplicaciones VBA
46/86
Pública
Se declaran las variables al inicio de cualquier módulo del proyecto y antes del procedimiento, se declaran
una sola vez y estarán disponibles en todos los procedimientos y módulos y lo hacen a través de la instrucción
Public. Pierden su valor cuando se interrumpe bruscamente un procedimiento por un error o es forzado a
finalizar por una instrucción.
Módulos estándar
Se declara la variable Documento comoPublic en este módulo.
Al acabar el procedimiento anterior (y no
inicializarse en este) se mantiene el valor finalde la variable al comenzar este procedimiento.
8/9/2019 Visual Basic Para Aplicaciones VBA
47/86
Clase 6 – Elementos del lenguaje VBA parte 3
Se declaran mediante la instrucción Const y se le asigna el valor en esa misma instrucción.
¿Por qué declarar constantes?
8/9/2019 Visual Basic Para Aplicaciones VBA
48/86
Constantes locales
Constantes a nivel de un módulo
Constantes públicas
Se declara localmente
Retorno de carro
No se especifica el tipo de datos, por lo tanto Visual Basic asumeque la primera es Double y la segunda Integer
Se declara al principio del módulo y antes de los procedimientos
NO se puede modificar el valor inicial de una constante. La ejecución deeste procedimiento daría ERROR.
8/9/2019 Visual Basic Para Aplicaciones VBA
49/86
xlEdgeTop, xlDashDot son constantes internas que definen el borde superior y el tipo de línea de una celda
o rango de celdas.
Función interna MsgBox
En Visual Basic TODAS las constantes son representadas con números
Parámetros
Prompt
Obligatorio. Expresión de tipo String 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.
Si Prompt consta de más de una línea, puede separar las líneas mediante un carácter de retorno de carro
(Chr(13)), un carácter de avance de línea (Chr(10)) o una combinación de caracteres de retorno de carro/avance
de línea (Chr(13) y Chr(10)) entre cada línea.
Buttons
Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y tipo de
botones que se han de mostrar, el estilo de icono que se va a usar, la identificación del botón predeterminado
y la modalidad del cuadro de mensaje. Si se omite Buttons, el valor predeterminado será cero.
Title
Opcional. Expresión de tipo String que se muestra en la barra de título del cuadro de diálogo. Si se omite Title,
en la barra de título aparecerá el nombre de la aplicación.
0 4 4
256
1 16 64 512
2 32 0
http://void%280%29/http://void%280%29/http://void%280%29/
8/9/2019 Visual Basic Para Aplicaciones VBA
50/86
Valores
En la siguiente tabla se incluyen los valores de enumeración de MsgBoxStyle:
Miembro Valor Descripción
OKOnly 0 Muestra sólo el botón Aceptar.
OKCancel 1 Muestra los botones Aceptar y Cancelar.
AbortRetryIgnore 2 Muestra los botones Anular, Reintentar y Omitir.
YesNoCancel 3 Muestra los botones Sí, No y Cancelar.
YesNo 4 Muestra los botones Sí y No.
RetryCancel 5 Muestra los botones Reintentar y Cancelar.
Critical 16 Muestra el icono Mensaje crítico.
Question 32 Muestra el icono Consulta de advertencia.
Exclamation 48 Muestra el icono Mensaje de advertencia.
Information 64 Muestra el icono Mensaje de información.
DefaultButton1 0 El primer botón es el predeterminado.
DefaultButton2 256 El segundo botón es el predeterminado.
DefaultButton3 512 El tercer botón es el predeterminado.
ApplicationModal 0 Aplicación modal: el usuario debe responder al cuadro de mensaje antes de
SystemModal 4096 Sistema modal: se suspenden todas las aplicaciones hasta que el usuario
MsgBoxSetForeground 65536 Especifica la ventana del cuadro de mensaje como ventana de primer plano.
MsgBoxRight 524288 Texto alineado a la derecha.
Ms BoxRtlReadin 1048576 Es ecifica ue el texto debe a arecer ara ser leído de derecha a iz uierda
El primer grupo de valores (0-5) describe el número y tipo de botones mostrados en el cuadro de diálogo. El segundo
grupo (16, 32, 48, 64) describe el estilo de icono. El tercer grupo (0, 256, 512) determina qué botón es el valor
predeterminado. El cuarto grupo (0, 4096) determina la modalidad del cuadro de mensaje y el quinto grupo especifica
si el cuadro de mensaje es la ventana de primer plano, junto con la alineación y la dirección del texto. A la hora de sumar
números para crear el valor final del argumento Buttons, se deberá utilizar únicamente un número de cada grupo.
http://void%280%29/http://void%280%29/http://void%280%29/
8/9/2019 Visual Basic Para Aplicaciones VBA
51/86
Valor devuelto
Constante Valor
OK 1
Cancel 2
Abort 3
Retry 4
Ignore 5
Yes 6
No 7
http://void%280%29/http://void%280%29/http://void%280%29/
8/9/2019 Visual Basic Para Aplicaciones VBA
52/86
Clase 7 – Elementos del lenguaje VBA parte 4
VBA controla de forma variable la longitud porque no se especificasu dimensión.
Aquí controlamos la longitud siempre y cuando la conozcamos.
8/9/2019 Visual Basic Para Aplicaciones VBA
53/86
Trabajar con variables declaradas tipo Date nos permite realizar operaciones como conocer el número de
días que hay entre dos fechas. También se almacena información que tiene que ver con el tiempo: horas,
minutos y segundos.
Se emplea el símbolo # para asignar valores tipo Date, bien
sea para tiempo y/o fechas.
Se construye una fecha a través de la función interna DateSerial. Elorden es AAAA,MM,DD.
Se declara una constante tipo Date y se asigna valor con el
formato MM/DD/AAAA.
8/9/2019 Visual Basic Para Aplicaciones VBA
54/86
Clase 8 – Elementos del lenguaje VBA parte 5
Una Expresión no asigna valores, únicamente realiza cálculos, verificaciones y obtenciones.
8/9/2019 Visual Basic Para Aplicaciones VBA
55/86
Asignar un valor falso a una variable es la negación Not True
celda D4 Convierte a String un valor numérico
8/9/2019 Visual Basic Para Aplicaciones VBA
56/86
Se muestra en pantalla el valor Verdadero si A1 = 5 y A2=5
8/9/2019 Visual Basic Para Aplicaciones VBA
57/86
Por la forma en que se resuelven las operaciones debemos poner entre paréntesis el númeronegativo para que se resuelva primero
8/9/2019 Visual Basic Para Aplicaciones VBA
58/86
Clase 9 – Elementos del lenguaje VBA parte 6
Conceptos generales
Declaración
Los límites dealmacenamiento de unarreglo es lo queespecifica el índice + 1,es decir, el índicedetermina el límitesuperior y el inferiorsiempre será 0 si no esespecificado.
8/9/2019 Visual Basic Para Aplicaciones VBA
59/86
Ejemplo: especificando el índice en un vector
Ejemplo: empleando un bucle en un vector
Declaración de 10 elementos, comenzandodesde el índice inferior 0 si no se específicao determinándolo expresamente
8/9/2019 Visual Basic Para Aplicaciones VBA
60/86
Ejemplo: empleando un bucle en una matriz
Ejemplo: especificando de forma automática y específica el límite inferior
Empleo de bucles anidadossegún el número dedimensiones de la matriz paracontrolar los índices de cadadimensión y así recorrer lamatriz completa.
Se especifica el límite inferior de TODOS los arreglos en 1
La posición (0) no existe y se produce el errorya que fue declarada la instrucción:
Option Base 1
8/9/2019 Visual Basic Para Aplicaciones VBA
61/86
La forma más eficiente de trabajar con Vectores y Matrices es desde luego declarándolos dinámicamente, con esto se
tendrá la plena seguridad de que solo se utilizará los recursos necesarios del sistema a la hora de implementar los
Arreglos en su código. Además, las funciones que aquí se presentan potencian en gran medida el trabajo con Arreglos.
Permite almacenar números desde 0 hasta 255.
Permite redimensionar un vector.
Volvemos a redimensionar elvector, ahora con másposiciones.
8/9/2019 Visual Basic Para Aplicaciones VBA
62/86
Última fila llena(movimientohacia abajoxlDown) y última
columna llena(movimientohacia la derechaxlRight) a partirde “D1”.
La propiedad“Count” cuenta el
número de celdasde los rangos quese establecen.
Redimensiona empleando el contenido de variables.
ReDim Preserve para no perder los datos contenidospreviamente en un arreglo. Únicamente se aplica alos límites inferior y superior de la última dimensión.
8/9/2019 Visual Basic Para Aplicaciones VBA
63/86
El copiado de arreglos se debe realizar enarreglos de igual dimensión si son fijas o en
arreglos dinámicos.
Después de una instrucción Erase se deberedimensionar el arreglo porque si no daerror en ejecución.
8/9/2019 Visual Basic Para Aplicaciones VBA
64/86
Clase 10 – Elementos del lenguaje VBA parte 7
Las variables de objeto permiten reducir la cantidad de código que hay que escribir. Podría abreviar el segmento decódigo utilizando una variable de objeto para el control, con lo que aumentaría la rapidez de su ejecución. Es conveniente
que se declare la variable de objeto con la clase específica que se desea asignar. Una vez que se haya asignado un objeto
a la variable, se podrá tratar exactamente igual que el objeto al que se hace referencia. Puede establecer o recuperar las
propiedades del objeto o utilizar cualquiera de sus métodos.
Declaración de una variable de objeto
En la lista de miembros automática se especifican tanto objetos como tipos de datos.
8/9/2019 Visual Basic Para Aplicaciones VBA
65/86
Variables de objeto genéricas
Asignar objetos a las variables de objeto
La instrucción Nothing indica que la variable de objeto ya no está vinculado a ningún objeto, o lo que es lo
mismo, interrumpe su asociación y se liberan todos los recursos del Sistema y de Memoria que se habían
asociados.
La instrucción New le indica a visual basic que debe crear un nuevo objeto y asignarlo a la variable de objeto
que se hace referencia.
8/9/2019 Visual Basic Para Aplicaciones VBA
66/86
Desasociamos la variable de objeto con el objeto adjudicado antes.
Asociamos la variable de objeto con un objeto que es la colección de comentarios de la Hoja1.
Volvemos a asociar la variablede ob eto con otro ob eto.
RND() es una función que suministra valores aleatorios
8/9/2019 Visual Basic Para Aplicaciones VBA
67/86
Un objeto Collection de Visual Basic es un conjunto ordenado de elementos a los que se puede hacer
referencia como unidad. Se puede ver de manera sencilla a un grupo relacionado de elementos como si se
tratase de un solo objeto. Los elementos de una colección únicamente necesitan estar relacionados por el
hecho de estar ubicados en la colección. Los elementos de una colección no tienen que compartir el mismo
tipo de datos.
Agregar un elemento que use el método Add.
Quitar un elemento que use el método Remove.
Quitar todos los elementos que usen el método Clear.
Averiguar cuántos elementos contiene la colección con la propiedad Count.
Comprobar si un determinado elemento está presente con el método Contains.
Devolver un determinado elemento de la colección con la propiedad Item.
Recorrer en iteración la colección completa con Instrucción For To...Next.
Variable de objeto del tipo Collection
8/9/2019 Visual Basic Para Aplicaciones VBA
68/86
Para agregar un elemento a una colección
Use el método Add y especifique el elemento por su Key .
object.Add(Item, Key [, {Before | After}])
El uso de una clave es opcional. Si no desea asociar una clave al objeto de su colección, puede agregarlo sin una
clave. Puede utilizar los argumentos Before y After para mantener una colección ordenada de objetos. El miembro
que se agrega se coloca en la colección antes o después del miembro identificado por elargumentoBefore o After respectivamente. Por ejemplo, si estable Before igual a 1, se inserta un elemento al
principio de la colección porque los objetos Collection están basados en 1. De forma similar, el
argumento After agrega un elemento después del índice especificado.
Para eliminar un elemento de una colección
Use el método Remove y especifique el elemento por su Index o su Key .
object.Remove({Index | Key})
El argumento Index es la posición del elemento que desea eliminar. El argumento Key es la misma cadena que ha
utilizado para agregar el elemento a la colección. Si la clave del tercer elemento de una colección es "W017493",
puede utilizar cualquiera de las dos instrucciones siguientes para eliminarlo.
workOrders.Remove(3)
workOrders.Remove("W017493")
Para eliminar todos los elementos de una colección
Utilice el método Clear.
object.Clear()
El método Clear vacía la colección.
Para recuperar un elemento de una colección
1. Use la propiedad Item y especifique el elemento por su Index o su Key .
variable = object.Item({Index | Key})
Igual que con el método Remove, el argumento Index es la posición del elemento en la colección y el
argumento Key es la cadena utilizada al agregar el elemento. Con el mismo ejemplo del método Remove,
cualquiera de las instrucciones siguientes recupera el tercer elemento de la colección: Si utiliza números como
claves, debe utilizar sus métodos ToString para convertirlos en las cadenas antes de pasarlos al
método Add o Remove o a la propiedad Item. Un objeto de Visual Basic Collection supone siempre que
un número es un índice, en vez de una cadena de clave.
woCurrent = workOrders.Item(3)
woCurrent = workOrders.Item("W017493")
http://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.add(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.add(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.add(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.remove(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.remove(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.remove(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.clear(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.clear(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.clear(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.item(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.item(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.item(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/system.object.tostring(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/system.object.tostring(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/system.object.tostring(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.item(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.clear(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.remove(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/microsoft.visualbasic.collection.add(v=vs.100).aspx
8/9/2019 Visual Basic Para Aplicaciones VBA
69/86
Clase 11 – Elementos del lenguaje VBA parte 8
Estructura
Declaración y uso
8/9/2019 Visual Basic Para Aplicaciones VBA
70/86
Tipos de datos personalizados y matrices
Ubound(Cliente) función para extraer el límite superior de la variable-vector “Cliente” y pasarlo como
argumento al límite superior de la construcción del bucle.
Ya está declarado el Type Persona en otro módulo, se emplea conuna variable Array
El Array es dinámico, en cada ciclo se redefine
Se vuelca el contenido del Array en la hoja de cálculo
8/9/2019 Visual Basic Para Aplicaciones VBA
71/86
Clase 12 – Elementos del lenguaje VBA parte 9
Concepto general de Función
Interrelación entre las funciones de la hoja de cálculo y las funciones VBA
Al escribir “vba.” automáticamente se despliega la lista de
funciones que vienen incorporadas a este lenguaje de
programación.
8/9/2019 Visual Basic Para Aplicaciones VBA
72/86
Llamar a una función de hoja de cálculo desde Visual Basic – Funciones no equivalentes
En Visual Basic, las funciones de hoja de cálculo de Microsoft Excel pueden ejecutarse mediante el objeto
WorksheetFunction. Hay que definir primero el rango con una instrucción Set y luego colocar la función
usando Application.WorksheetFunction
El siguiente procedimiento usa la función Min para obtener el valor más pequeño de un rango de celdas.
Si está integrada la función no es necesario emplear la instrucción WorksheetFunction:
Se declara la variable miRan o como un ob eto Ran e
se establece como el rango A1:C10 de la Hoja1
se asigna al resultado de aplicar lafunción Mín a miRango
8/9/2019 Visual Basic Para Aplicaciones VBA
73/86
Clase 13 – Estructuras de control parte 1
8/9/2019 Visual Basic Para Aplicaciones VBA
74/86
8/9/2019 Visual Basic Para Aplicaciones VBA
75/86
Clase 14 – Estructuras de control parte 2
8/9/2019 Visual Basic Para Aplicaciones VBA
76/86
8/9/2019 Visual Basic Para Aplicaciones VBA
77/86
Variable de ob eto asociada a un ob eto Comment
8/9/2019 Visual Basic Para Aplicaciones VBA
78/86
Copia el contenido dela celda “padre” delcomentario a la celdaubicada 2 celdas a laizquierda.
Cambia color defondo
Cambia contorno Y si se encuentra el
strring “F10” en el
contenido delcomentario para elciclo.
8/9/2019 Visual Basic Para Aplicaciones VBA
79/86
Clase 15 – Estructuras de control parte 3
8/9/2019 Visual Basic Para Aplicaciones VBA
80/86
8/9/2019 Visual Basic Para Aplicaciones VBA
81/86
8/9/2019 Visual Basic Para Aplicaciones VBA
82/86
Clase 16 – Estructuras de control parte 4
8/9/2019 Visual Basic Para Aplicaciones VBA
83/86
8/9/2019 Visual Basic Para Aplicaciones VBA
84/86
Forma Lineal
8/9/2019 Visual Basic Para Aplicaciones VBA
85/86
Forma de Bloque
8/9/2019 Visual Basic Para Aplicaciones VBA
86/86