Visual Basic Para Aplicaciones VBA

2014 Visual Basic para Aplicaciones VBA 2013 MICROSOFT EXCEL 2013 ROSALINDA HERNÁNDEZ [NOMBRE DE LA COMPAÑÍA] | [Dire

Views 131 Downloads 3 File size 8MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

2014

Visual Basic para Aplicaciones VBA 2013

MICROSOFT EXCEL 2013 ROSALINDA HERNÁNDEZ

[NOMBRE DE LA COMPAÑÍA] | [Dirección de la compañía]

Tabla de contenido Clase 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

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

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

Clase 1 - Módulos

Para RENOMBRAR un módulo debemos seleccionar el módulo y tener abierto la ventana de Propiedades:

Para ELIMINAR un módulo:

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:

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:

Objetos y Colecciones

Los objetos están organizados en jerarquía, Un LIBRO contiene varias HOJAS y cada hoja puede contener grá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.

Referencias a Objetos

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:

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.

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í:

Comment

Caso práctico 1 – Buscar comentarios

En Excel



En VBA, insertamos un Formulario y un Módulo, les cambiamos el nombre

Cambiamos las propiedades del formulario:



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:

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:



 

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.



Se asigna el contenido de la caja de texto a la variable “TextoBuscado”.



For Each – Next Sirve 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.

   

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.

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:

Clase 3 – Obtener un Objeto Range

Sobre un Objeto Worksheet La primera sintaxis identifica a una sola celda por medio de Cell1:

 Se identifica a una sola celda  Se hace alusión a un rango de celdas definidas por un NOMBRE

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 de celdas 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:

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

*-- 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.    

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

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.  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

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.  Se borra el contenido del rango A1 hasta E9  Se borran el contenido de TODAS las 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.  A partir de la celda C2 se avanza tres filas hacia abajo y dos columnas a la derecha E5

Clase 4 – Elementos del lenguaje VBA parte 1

    

Comentarios Declaración de variables Inicialización de variables Bucle Instrucción de asignación  Fin del bucle  Función interna

Emplearemos : para escribir otra instrucción en la misma línea:

Emplearemos _ para seguir la instrucción en la siguiente línea:

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 en comentarios 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.

Tipos de datos de las variables

Reglas para los nombres de las Variables

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).  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

Para obligar a que se declaren las variables debemos de:

Asignación de valores a las variables:

Declarar una variable normal genéricamente

Clase 5 – Elementos del lenguaje VBA parte 2

Ámbito Local

 A pesar de que no se inicialice en algún valor, la variable “Resultado” SIEMPRE se pone a 0 cuando se ejecuta el procedimiento porque está declarada como un valor numérico.  Con la instrucción Dim se pueden declarar varias variables dentro de la misma instrucción pero si no se especifica a cada una su tipo sólo la última variable es la que se le asocia el tipo de datos, las restantes son Variant.  Manera correcta de declarar las variables. Cada una asociada a su tipo de datos.

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.

 Cuando se declara una variable con la palabra clave Static en vez de Dim no se destruye su información cuando el procedimiento acaba.

 Si queremos que una variable Static pierda su valor, debemos forzar la finalización del procedimiento agregando la instrucción End antes del cierre normal de dicho procedimiento.

A nivel de un módulo

 Podemos emplear la instrucción Dim o Private para declarar variables. Normalmente para 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 su información cuando se finaliza el procedimiento de forma normal únicamente cuando se produce un error o el procedimiento es obligado a finalizar

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 como Public en este módulo.

 Al acabar el procedimiento anterior (y no inicializarse en este) se mantiene el valor final de la variable al comenzar este procedimiento.

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?

Constantes locales

 Se declara localmente

 Retorno de carro

 No se especifica el tipo de datos, por lo tanto Visual Basic asume que la primera es Double y la segunda Integer

Constantes a nivel de un módulo  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 de este procedimiento daría ERROR.

Constantes públicas

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

4

0

16

1 2

32

256

4 8 64

512 0

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.

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 continuar trabajando en la aplicación actual.

SystemModal

4096

Sistema modal: se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensaje.

MsgBoxSetForeground

65536

Especifica la ventana del cuadro de mensaje como ventana de primer plano.

MsgBoxRight

524288

Texto alineado a la derecha.

MsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para ser leído de derecha a izquierda en los sistemas árabe y hebreo.

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.

Valor devuelto Constante

Valor

OK

1

Cancel

2

Abort

3

Retry

4

Ignore

5

Yes

6

No

7

Clase 7 – Elementos del lenguaje VBA parte 4

 VBA controla de forma variable la longitud porque no se especifica su dimensión.

 Aquí controlamos la longitud siempre y cuando la conozcamos.

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. El orden es AAAA,MM,DD.

 Se declara una constante tipo Date y se asigna valor con el formato MM/DD/AAAA.

Clase 8 – Elementos del lenguaje VBA parte 5

Una Expresión no asigna valores, únicamente realiza cálculos, verificaciones y obtenciones.

 Asignar un valor falso a una variable es la negación Not True

celda D4

Convierte a String un valor numérico

Se muestra en pantalla el valor Verdadero si A1 = 5 y A2=5

Por la forma en que se resuelven las operaciones debemos poner entre paréntesis el número negativo para que se resuelva primero

Clase 9 – Elementos del lenguaje VBA parte 6 Conceptos generales

Declaración

Los límites de almacenamiento de un arreglo es lo que especifica el índice + 1, es decir, el índice determina el límite superior y el inferior siempre será 0 si no es especificado.

Declaración de 10 elementos, comenzando desde el índice inferior 0 si no se específica o determinándolo expresamente

Ejemplo: especificando el índice en un vector

Ejemplo: empleando un bucle en un vector

Ejemplo: empleando un bucle en una matriz

Empleo de bucles anidados según el número de dimensiones de la matriz para controlar los índices de cada dimensión y así recorrer la matriz completa.

Ejemplo: especificando de forma automática y específica el límite inferior  Se especifica el límite inferior de TODOS los arreglos en 1

 La posición (0) no existe y se produce el error ya que fue declarada la instrucción: Option Base 1

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 el vector, ahora con más posiciones.

 Redimensiona empleando el contenido de variables.

 Última fila llena (movimiento hacia abajo xlDown) y última columna llena (movimiento hacia la derecha xlRight) a partir de “D1”.  La propiedad “Count” cuenta el número de celdas de los rangos que se establecen.

 ReDim Preserve para no perder los datos contenidos previamente en un arreglo. Únicamente se aplica a los límites inferior y superior de la última dimensión.

El copiado de arreglos se debe realizar en arreglos de igual dimensión si son fijas o en arreglos dinámicos. Después de una instrucción Erase se debe redimensionar el arreglo porque si no da error en ejecución.

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 de có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.

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.

Asociamos la variable de objeto con un objeto que es la colección de comentarios de la Hoja1.

 Desasociamos la variable de objeto con el objeto adjudicado antes.  Volvemos a asociar la variable de objeto con otro objeto. RND() es una función que suministra valores aleatorios

 Variable de objeto del tipo Collection

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.

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 el argumentoBefore 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")

Clase 11 – Elementos del lenguaje VBA parte 8 Estructura

Declaración y uso

Tipos de datos personalizados y matrices  Ya está declarado el Type Persona en otro módulo, se emplea con una variable Array  El Array es dinámico, en cada ciclo se redefine

 Se vuelca el contenido del Array en la hoja de cálculo

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.

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.

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.

 Se declara la variable miRango como un objeto Range  se establece como el rango A1:C10 de la Hoja1  se asigna al resultado de aplicar la función Mín a miRango

Si está integrada la función no es necesario emplear la instrucción WorksheetFunction:

Clase 13 – Estructuras de control parte 1

Clase 14 – Estructuras de control parte 2

 Variable de objeto asociada a un objeto Comment

 Copia el contenido de la celda “padre” del comentario a la celda ubicada 2 celdas a la izquierda.  Cambia color de fondo  Cambia contorno  Y si se encuentra el strring “F10” en el contenido del comentario para el ciclo.

Clase 15 – Estructuras de control parte 3

Clase 16 – Estructuras de control parte 4

Forma Lineal

Forma de Bloque