Descargar

Manual de VBA (Visual Basic for Applications)

Enviado por Felipe Ordenes


    1 INTRODUCCION

    VBA (Visual Basic for Applications) es un lenguaje de programación que permite crear macros, es decir, un conjunto de instrucciones de código que permiten realizar una tarea determinada. Excel 2007 trae incorporado un editor de VBA, por lo que las macros se programan dentro del mismo programa Excel.

    Las macros sirven para:

    – Automatizar procesos.

    – Crear funciones.

    – Crear comandos, complementos y menús.

    – Crear aplicaciones.

    Cuando se habla de macros se habla de Objetos, Propiedades y Métodos (OPM). Estos son los 3 conceptos generales más importantes que se deben conocer a la hora de programar macros.

    Objetos: Corresponden a los elementos mismos, tales como una hoja, un libro, el Excel mismo, una tabla, un rango, un gráfico, una columna, una fila, etc.

    Propiedades: Corresponden a las características de cada objeto, tales como el ancho, alto, color, etc.

    Métodos: Corresponden a las acciones que se pueden ejercer sobre los objetos, tales como abrir, cerrar, ejecutar, activar, mover, copiar, borrar, etc.

    1.1 ELEMENTOS

    1.1.1 Ventana Proyecto

    La ventana proyecto contiene las carpetas donde se guardan las macros. La ventana proyecto es la siguiente.

    edu.red

    1.1.2 Ventana Propiedades

    La ventana propiedades contiene las propiedades del objeto seleccionado. La ventana propiedades es la siguiente.

    edu.red

    1.1.3 Ventana Código

    La ventana código contiene el código de la macro. La ventana código es la siguiente.

    edu.red

    1.1.4 Ventana Inmediato

    La ventana inmediato permite escribir, ejecutar y probar un código rápidamente, sin tener que armar toda la macro con la estructura, sino colocando un signo de interrogación previo a la línea de codigo. La ventana inmediato es la siguiente.

    edu.red

    1.1.5 Ventana Locales

    La ventana locales contiene todas las variables del objeto actual y los valores de estas cuando el código se esta ejecutando. La ventana locales es la siguiente.

    edu.red

    1.1.6 Ventana Inspección

    La ventana inspección contiene las expresiones a evaluar previamente definidas. La ventana inspección es la siguiente.

    edu.red

    2 ESTRUCTURA

    2.1 VARIABLES

    2.1.1 Tipos de Variables

    edu.red

    2.1.2 Variables Locales

    Corresponden a variables declaradas dentro de una macro, y que solo pueden ser usadas dentro de esta. Cuando la macro termina de ejecutarse, la variable desaparece y se libera la memoria. La declaración de una variable local es la siguiente.

    Dim NombreVariable as TipoVariable

    2.1.3 Variables Públicas

    Corresponden a variables declaradas fuera de todas las macros, y que están disponibles para todas. La declaración de una variable pública es la siguiente.

    Public NombreVariable as TipoVariable

    2.1.4 Variables Estáticas

    Corresponden a variables declaradas dentro de una macro, y que conservan su valor mientras el módulo, módulo de clase o userform estén en uso o abiertos. La declaración de una variable estática es la siguiente.

    Static NombreVariable as TipoVariable

    2.1.5 Convertir Variables

    Función

    Tipo Devuelto

    Cbyte

    Byte

    CInt

    Integer

    CLong

    Long

    CCur

    Currency

    CSng

    Single

    CDbl

    Double

    CDec

    Decimal

    CDate

    Date

    CStr

    String

    CVar

    Variant

    CBool

    Boolean

    2.2 SENTENCIAS

    2.2.1 Do Loop

    Do Loop se utiliza para repetir las mismas instrucciones varias veces hasta que una condición tenga lugar.

    Do [Instrucciones] Loop

    2.2.2 For Next

    For Next se utiliza para repetir un grupo de instrucciones un número especificado de veces.

    For [Contador] = [Principio] To [Fin] Step [Incremento] [Instrucciones]

    If [Condicion] then

    [Exit For] End If

    Next [Contador]

    2.2.3 For Each Next

    For Each Next se utiliza para repetir un grupo de instrucciones para cada elemento de una matriz o colección.

    For Each [Elemento] In [Grupo] [Instrucciones]

    If [Condicion] then

    [Exit For] End If

    Next [Elemento]

    2.2.4 While Wend

    While Wend se utiliza para repetir una serie de instrucciones mientras se cumpla una determinada condición, es decir, tenga el valor True.

    While [Condicion] [Intrucciones] Wend

    2.2.5 GoTo

    GoTo se utiliza para variar el sentido que debería tomar una macro, ya que cuando una macro llega a una línea que contiene dicha instrucción "salta" al lugar especificado en GoTo.

    GoTo [Linea] Linea:

    2.2.6 With End With

    With End With se utiliza para ejecutar una serie de instrucciones sobre un único objeto o sobre un tipo definido por el usuario. Permite realizar múltiples operaciones sobre el mismo objeto.

    With [Objeto] [Instrucciones] End With

    2.2.7 If Then

    If Then se utiliza para escoger entre 2 o más posibilidades, para decidir sobre que es lo que se quiere, entre una serie de alternativas.

    If [Condicion] Then

    [Instrucciones]

    ElseIf [CcondicionElseIf] Then

    [InstruccionesElseIf] Else [InstruccionesElse] End If

    2.2.8 Select Case

    Select Case se utiliza cuando las alternativas en una estructura de If Then son muchas. En tal caso conviene evitar el If Then y hacer uso de Select Case, que permite ejecutar uno de varios grupos de instrucciones, dependiendo del valor de una expresión.

    Select Case [Expresion-m] Case [Expresion-1]

    [Instrucciones-1]

    Case [Expresion-2] [Instrucciones-2]

    …..

    Case [Expresion-n] [Instrucciones-n]

    Case Else

    [InstruccionesElse] End Select

    2.2.9 DoEvents

    DoEvents se utiliza para ceder el control de la ejecución al sistema operativo, para que éste pueda procesar otros eventos. El control no se devuelve hasta que el sistema operativo haya terminado de procesar los eventos en cola y se hayan enviado todas las teclas de la cola SendKeys.

    DoEvents()

    2.2.10 On Error GoTo

    On Error GoTo se utiliza para controlar un error de macro en caso de existir. Permite indicar que en caso de existir un error haga un salto a otra línea donde se le indique cómo proceder.

    On Error GoTo CasoError

    CasoError:

    2.2.11 On Error Resume Next

    On Error Resume Next se utiliza para controlar un error de macro en caso de existir. Permite indicar que en caso de existir un error lo omita.

    3 ARRAYS

    Un Array corresponde a una cadena de elementos. Cada elemento de un array tiene un número de índice que lo identifica como único.

    3.1 ARRAYS FIJOS

    Un array fijo corresponde a aquel que posee un número fijo de elementos. La declaración

    de un Array fijo de "n" elementos se hace de las siguientes formas.

    Dim NombreArray(0 to n) as TipoVariable

    Dim NombreArray(n) as TipoVariable

    3.2 ARRAYS VARIABLES

    Un array variable corresponde a aquel que puede modificarse el número de elementos. La declaración de un Array variable se hace de la siguiente forma.

    Dim NombreArray() as TipoVariable

    3.3 ARRAYS BIDIMENSIONALES

    Un array bidimensional corresponde a aquel que posee 2 dimensiones, es decir, en vez de cadena corresponde a una matriz de elementos. La declaración de un Array bidimensional fijo de "n" y "m" elementos se hace de las siguientes formas.

    Dim NombreArray(1 to n, 1 to m) as TipoVariable

    Dim NombreArray(n, m) as TipoVariable

    3.4 FUNCIONES DE ARRAY

    3.4.1 Redim

    Redimensiona el Array borrando la información que tenia guardada. La función Redim se usa de la siguiente forma.

    Redim NombreArray(n)

    3.4.2 Redim Preserve

    Redimensiona el Array conservando la información que tenia guardada. La función Redim

    Preserve se usa de la siguiente forma.

    Redim Preserve NombreArray(n)

    3.4.3 LBound

    Devuelve el índice inferior del array. La función LBound se usa de la siguiente forma.

    LBound(NombreArray)

    3.4.4 UBound

    Devuelve el índice superior del array. La función UBound se usa de la siguiente forma.

    UBound(NombreArray)

    3.4.5 Join

    Devuelve un String que contiene todos los elementos del Array separados por un elemento separador. La función Join se usa de la siguiente forma.

    Join(NombreArray, "Separador")

    3.4.6 Split

    Devuelve un Array cuyos elementos corresponden a los que conforman un String separados por un elemento separador. La función Split se usa de la siguiente forma.

    Split(NombreArray, "Separador")

    3.4.7 Filter

    Devuelve un array filtrado según algún criterio de búsqueda, permitiendo incluir o excluir el texto de busqueda (True/False). La función Filter se usa de la siguiente forma.

    Filter(NombreArray, "TextoBusqueda", True/False)

    4 USERFORM

    4.1 CUADRO DE HERRAMIENTAS

    edu.red

    Las opciones y sus funcionalidades son las siguientes.

    edu.redSeleccionar Objetos: Permite seleccionar controles insertos en el Userform.

    edu.redLabel: Permite insertar una etiqueta.

    edu.redTextbox: Permite insertar un cuadro de texto, en el cual se introducen datos.

    edu.redComboBox: Sirve para que un usuario elija una opción de una lista.

    edu.redListBox: Sirve para que un usuario rellene o elija varias opciones de una lista.

    edu.redCheckBox: Permite insertar una caja de checkeo.

    edu.redOptionButton: Permite insertar botones de opciones.

    edu.redToggleButton: Sirve para activar o desactivar alguna funcionalidad. Este botón adopta el modo "Encendido" / "Apagado".

    edu.redFrame: Sirve para agrupar elementos de un Userform (los elementos se deben ubicar dentro del Frame).

    edu.redCommandButton: Es un simple botón que nos permite ejecutar acciones.

    edu.redTabStrip: en un mismo Userform se pueden crear distintas secciones.

    edu.redMultiPage: en un mismo Userform se pueden crear distintas páginas.

    edu.redScrollBar: si tenemos una lista con muchos elementos el scrollbar nos permite navegarlos.

    edu.redSpinButton: permite aumentar o disminuir valores.

    edu.redImage: permite introducir imágenes en el Userform.

    edu.redRefEdit: permite hacer referencia a una celda de Excel.

    4.2 FUNCIONES DE USERFORM

    4.2.1 Load

    Carga el Userform para ser mostrado en pantalla. La función Load se usa de la siguiente forma.

    Load NombreUserForm

    5 DECLARACIONES

    5.1 OPTION

    5.1.1 Option Explicit

    Obliga a declarar explícitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Cuando no se usa, todas las variables no declaradas son Variant.

    5.1.2 Option Private Module

    Impide que las variables declaradas en el modulo sean utilizadas en otros archivos. La variables declaradas como publicas dentro del modulo si están disponibles en otros modulos del mismo archivo, pero no en modulos de otros archivos.

    5.1.3 Option Base 0

    Establece el 0 como el índice inferior de los Array declarados en el modulo. Esta opción viene por default, por lo que no es necesario declararla.

    5.1.4 Option Base 1

    Establece el 1 como el índice inferior de los Array declarados en el modulo.

    5.1.5 Option Compare Binary

    Especifica el método de comparación de Strings para un módulo. Esta opción viene por default, por lo que no es necesaria declararla. El ordenamiento de menor a mayor Binary es el siguiente.

    A < B < E < Z < a < b < e < z

    5.1.6 Option Compare Text

    Especifica el método de comparación de Strings para un módulo. El ordenamiento de menor a mayor Text es el siguiente.

    (A = a) <(=) <(B = b) <(E = e) <(=) <(Z = z) <(=)

    5.2 EVENTOS DE LIBROS

    Los eventos de libros corresponden a determinados sucesos propios de un libro, tales como abrirlo, guardarlo, cerrarlo, imprimirlo, etc. Las macros de eventos de libros se deben escribir en la carpeta ThisWorkbook de la ventana proyecto.

    En la primera lista desplegable de la ventana código se debe seleccionar la opción

    Workbook.

    En la segunda lista desplegable de la ventana código se debe seleccionar el evento de libro deseado.

    5.2.1 Activate

    Se ejecuta al activar el libro.

    5.2.2 AddinInstall

    Se ejecuta cuando el libro se instala como un complemento.

    5.2.3 AddinUninstall

    Se ejecuta cuando el libro se desinstala como un complemento.

    5.2.4 AfterXmlExport

    Se ejecuta después de guardar o exportar datos del libro a un archivo XML.

    5.2.5 AfterXmlImport

    Se ejecuta después de actualizar una conexión de datos XML o después de importar nuevos datos XML en el libro.

    5.2.6 BeforeClose

    Se ejecuta antes de cerrar el libro.

    5.2.7 BeforePrint

    Se ejecuta antes de imprimir el libro.

    5.2.8 BeforeSave

    Se ejecuta antes de guardar el libro.

    5.2.9 BeforeXmlExport

    Se ejecuta antes de guardar o exportar datos del libro a un archivo XML.

    5.2.10 BeforeXmlImport

    Se ejecuta antes de actualizar una conexión de datos XML o después de importar nuevos datos XML en el libro.

    5.2.11 Deactivate

    Se ejecuta cuando se desactiva el libro.

    5.2.12 NewSheet

    Se ejecuta cuando se crea una hoja en el libro.

    EL PRESENTE TEXTO ES SOLO UNA SELECCION DEL TRABAJO ORIGINAL. PARA CONSULTAR LA MONOGRAFIA COMPLETA SELECCIONAR LA OPCION DESCARGAR DEL MENU SUPERIOR.