Visual Basic Para Aplicaciones VBA

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