03 MacrosVBAExcelAvanzado EAA de 11

download 03 MacrosVBAExcelAvanzado EAA de 11

of 18

Transcript of 03 MacrosVBAExcelAvanzado EAA de 11

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    1/18

    Excel Avanzado con VBA 03Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    2/18

    VARIABLES, CONSTANTES,EXPRESIONES Y TIPOS DEDATOS

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    3/18

    Variables y tipos de datos

    El propsito principal de VBA es manipular datos. Tambin sepueden guardan en las variables que se crean. Una variable es una localizacin de almacenamiento con

    nombre, dentro de la memoria del ordenador.

    VBA tiene algunas reglas relacionadas con los nombres de las variables: Se pueden usar caracteres alfabticos, nmeros y algn carcter de puntuacin, pero el primero de los caracteresdebe ser alfabtico

    VBA no distingue entre maysculas y minsculas No se pueden usar espacios ni puntos No se pueden incrustar en el nombre de una variable los

    siguientes smbolos: #, $, %,! Los nombres de las variables pueden tener hasta 254 caracs.

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    4/18

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    5/18

    AMBITO de las variablesEl mbito de una variable determina el mdulo y elprocedimiento en el que se puede usar una variable.

    17/02/2013Ing. Enrique Alfaro

    mbito Cmo se declara una variable en este mbitoUn procedimiento Incluye instrucciones Dim, Static o Private dentro del

    procedimiento.Al nivel de mdulo Incluye una instruccin Dim antes del primer

    procedimiento de un mdulo.Todos los mdulos Incluye una instruccin Public antes del primer

    procedimiento de un mdulo

    VARIABLES LOCALESUna variable local es una variable declarada dentro deun procedimiento. Estas variables se pueden usar sloen el procedimiento en que se declararon. Cuando elprocedimiento finaliza, la variable deja de existir.

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    6/18

    VARIABLES LOCALESComunmente, una variable local, se declara dentro de unainstruccin DIM. Ejemplos:

    Sub MiSub()DIM x As IntegerDIM Primero As LongDIM edad As ByteDIM TasaInteres As SingleDIM FechadeHoy As DateDIM NombreUsuario As String * 20'Aqu empieza el cdigo del procedimiento

    End Sub Esto tambin es vlido:

    DIM x As Integer, Primero As Long, TasaInteres As SingleO: DIM x, y, z As Integer

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    7/18

    VARIABLES A NIVEL DE MDULOPara que una variable est disponible para todos losprocedimientos de un mdulo, se declara la variableantes del primer procedimiento del mdulo (fuera decualquier procedimiento o funcin). Ejemplo:

    DIM fecha As DateSub Dias()

    'Aqu va el cdigo End SubSub Meses() 'Aqu va el cdigo

    End Sub

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    8/18

    Variables PUBLICPara que una variable est disponible para todos losprocedimientos de un proyecto de VBA, se declara la

    variable a nivel de mdulo usando la palabra publicEjemplo:

    Public TasaAnual as Long

    17/02/2013Ing. Enrique Alfaro

    lf

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    9/18

    Trabajar con CADENASExisten dos tipos de cadenas en VBA:Cadenas de longitud fija, que se declaran con un

    nmero especfico de caracteres. La mxima longitudes de 65.536 caracteres.

    Cadenas de longitud variable, que tericamentepueden tener hasta 2.000 milones de caracteres.

    Dim MiCadena As String * 50Dim SuCadena As String

    17/02/2013Ing. Enrique Alfaro

    17/02/2013I E i Alf

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    10/18

    Trabajar con FECHASDim Hoy As DateDim HoraInicio As DateConst PrimerDa As Date = #1/1/2001#

    Const MedioDa As date = #12:00:00 PM#

    Const es una palabra reservada paradeclarar constantes.

    17/02/2013Ing. Enrique Alfaro

    17/02/2013I E i Alf

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    11/18

    EXPRESIONES DE ASIGNACIN Una expresin de asignacin es una instruccin de VBA que realiza evaluaciones matemticas y asigna el

    resultado a una variable o aun objeto. VBA usa el signo igual = como operador de

    asignacin.x=1x=x+1

    x = (y * 2) / (z * 2)archivoabierto = trueRange (Ao). Value = 2010

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    12/18

    OPERADORESOPERADORES ARITMTICOS + Suma, - Resta, * Multiplicacin, / Divisin, \ Divisin

    entera, Mod Resto, ^ exponencial, & Concatenacin

    OPERADORES COMPARATIVOS = Igual, < Menor, > Mayor, =

    Mayor o igual, Distinto

    OPERADORES LGICOS Not (negacin lgica), And (conjuncin lgica),Or (disyuncin lgica)

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    13/18

    MATRICESUna matriz es un grupo de elementos del mismo tipoque tienen un nombre comn. Para referirse a unelemento especfico de una matriz se usa el nombrede la matriz y un nmero de ndice. Se declara con DIMo Public como cualquier variable. MATRICES DE UNA DIMENSION DIM MiMatriz(1 To 100) As Integer

    DIM MiMatriz (100)MiMatriz(1) = 20 MATRICES MULTIDIMENSIONALES DIM MiMatriz(1 To 100, 1 to 10) As IntegerMiMatriz(1,2) = 20

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    14/18

    VARIABLES DE OBJETO Una variable de objeto es una variable que representa unobjeto entero, como puede ser un rango o una hoja de clculo. Pueden simplificar el cdigo Pueden hacer que el cdigo se ejecute ms de prisa.

    Se declaran con DIM o Public. Veamos un ejemplo sin usar variables de objeto:Sub VarSinObj();

    Worksheets (Hoja1). Range (A1). Value = 124

    Worksheets (Hoja1). Range (A1).Font.Bold = TrueWorksheets (Hoja1). Range (A1).Font. Italic = TrueEnd Sub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    15/18

    VARIABLES DE OBJETO La rutina anterior introduce un valor en la celda A1de la HOJA1, del libro de trabajo activo, y despus

    aplica Negrita y cursiva a su contenido. Para reducirel cdigo se puede condensar la rutina con una variable de objeto:Sub VarObj();Dim MiCelda As Range

    Set Micelda = Worksheets (Hoja1). Range (A1) MiCelda.Value = 124MiCelda.Font.Bold = TrueMiCelda.Font. Italic = True

    End Sub

    17/02/2013Ing. Enrique Alfaro

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    16/18

    TIPOS DE DATOS DEFINIDOS POR EL USUA VBA permite crear tipos de datos personalizados definidos por elusuario.

    Type InfoClientesEmpresa As String * 25Ventas As Long

    End TypeSub datos()Dim clientes(0 To 100) As InfoClientes

    clientes(0).Empresa = "camposol"clientes(0).Ventas = 50000Range("a1").Value = clientes(0).EmpresaRange("a2").Value = clientes(0).Ventas

    End Sub

    17/02/2013Ing. Enrique Alfaro

    Los tipos de datos persona-lizados se definen fuera delos procedimientos, en laparte superior del mdulo

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    17/18

    FUNCIONES INTEGRADAS Las funciones integradas de VBA no son las mismaque las de Excel. La funcin UCASE de VBA, que

    convierte una cadena a maysculas es equivalente a lafuncin MAYUSC de Excel.

    Ejemplo:

    Sub MostrarRaiz()MiValor = 25RaizCuadrada = VBA.Sqr(MiValor)MsgBox RaizCuadrada

    End Sub

    17/02/2013Ing. Enrique Alfaro

    Para obtener la lista defunciones de VBA, se teclea enel cdigo: VBA seguido de unpunto. El Editor de VBdespliega una lista con todas las

    funciones.

    17/02/2013Ing. Enrique Alfaro

  • 7/29/2019 03 MacrosVBAExcelAvanzado EAA de 11

    18/18

    FUNCIONES INTEGRADASEl objeto WorsheetFunction, que est contenido en elobjeto Application, contiene todas las funciones dehoja de clculo que se pueden llamar desde losprocedimientos VBA. Veamos un ejemplo paraconvertir un nmero decimal en nmero romano.

    Sub MostrarRomano()ao = 2011enromano=Application.WorksheetFunction.Roman(ao)Range (C1). value= enromano

    End Sub

    g q