VBA Excel.pdf

Embed Size (px)

Citation preview

  • 7/23/2019 VBA Excel.pdf

    1/26

    Informtica Facultad de Ingeniera - UNNE 1

    MS-Excel - VBA

    Comprendiendo objetos, propiedades,

    mtodos y eventosUn objeto representa un elemento de una aplicacin, como una hoja de clculo, una

    celda, un diagrama, un formulario o un informe. En cdigo de Visual Basic, un objeto

    debe identificarse antes de que se pueda aplicar uno de los mtodos del objeto o

    camb iar el valor de un a de sus propiedades.

    Una coleccin es un objeto que contiene varios objetos que normalmente, pero no

    siempre, son del mismo tipo. En Microsoft Excel, por ejemplo, el objeto Workbooks

    contiene todos los objetos Workbook abiertos. En Visual Basic, la coleccin Formscontiene tod os los ob jeto s Form existen tes e n una ap licacin.

    Los elementos d e u na coleccin se pueden ide ntificar mediante su n mero o su nombre.

    Por ejemplo, en el siguiente procedimiento, Libro(1) identifica al primer objeto

    Workbookabierto.

    Sub CierraPrimero()Libro(1).Close

    End Sub

    El sigu iente p roced imiento utiliza un nombre e specificado como cade na p ara ident ificar

    un objeto Form .

    Sub CierraForm()Forms("MiForm.frm").Close

    End Sub

    Tambin es posible operar al mismo tiempo sobre toda una coleccin de objetos

    siempre que los objetos compartan mtodos comunes. Por ejemplo, el siguiente

    procedimiento cierra todos los fo rmularios abiertos.

    Sub CierraTodos()Forms.Close

    End Sub

    Mtodo es toda accin que puede realizar un objeto. Por ejemplo, Add es un mtodo

    del objeto ComboBox ya que sirve para aadir un nuevo elemento a un cuadro

    combinado.

    El siguiente procedimiento utiliza e l mto do Add para aadir un nuevo elemento a un

    ComboBox.

    Sub AadeElemen(nuevoElemento as String)Combo1.Add nuevoElemento

    http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    2/26

    Informtica Facultad de Ingeniera - UNNE 2

    End Sub

    Propiedad es un atributo de un objeto que define una de las caractersticas del objeto,

    tal como su tamao, color o localizacin en la pantalla, o un aspecto de su

    comp ortamiento, po r ejemplo si est visible o activado. Para camb iar las caractersticas

    de un o bjeto, se cambia el valor de sus propiedade s

    Para d ar valor a una p ropiedad, hay que colocar un punto detrs d e la referencia a un

    objeto, despus el nombre de la propiedad y finalmente el signo igual (= ) y el nuevo

    valor de la propiedad. Por ejemplo, el siguiente procedimiento cambia el ttulo de un

    formulario de Visual Basic dando un valor a la propiedad Caption.

    Sub CambiaNombre(nuevoTitulo)miForm.Caption = nuevoTitulo

    End Sub

    Hay propiedad es a las que n o se p ued e d ar valor. El tema de ayuda de cada propiedadindica si es posible leer y dar valores a la propiedad (lectura/escritura), leer slo el valor

    de la p ropiedad (slo lectura) o s lo d ar valor a la p ropiedad (slo escritura).

    Se puede obtener informacin sobre un objeto devolviendo el valor de una de sus

    propied ades. El sigu ien te procedimiento ut iliza un cuadro de dilogo para presentar el

    ttulo que aparece en la parte superior de l formulario a ctivo e n ese mome nto.

    Sub NombreFormEs()formNonmbre = Screen.ActiveForm.CaptionMsgBox formNombre

    End Sub

    Evento es to da accin que puede ser reconocida por un objeto, como puede ser el clic

    del mouse o la pulsacin de una tecla, y para la que es posible escribir cdigo como

    respuesta. Los evento s pue den ocurrir como resultado de una accin d el usuario o d el

    cdigo del programa, tambin pueden ser originado s por el sistema.

    Para un mejor conocimiento de los conceptos: procedimiento, objeto, propiedades,

    mtodo s y evento s, ver en e l glosario.

    Ejemplo de un procedimiento:

    Sub Command125_Click ()Range("A2").Value= 7

    Application.Close

    End Sub

    "Sub" es el procedimiento; "Command125_Click" es el evento; "Range ("A2")" y

    "App lication" son ob jeto s; "Value" es u na prop ied ad , y "Close" es u n m to do .

    Este procedimiento dice que cuando el usuario clickee sobre el botn de comando125, la celda A2 tome el valor de 7, y luego cierre la aplicacin (salir de Excel).

  • 7/23/2019 VBA Excel.pdf

    3/26

    Informtica Facultad de Ingeniera - UNNE 3

    Reglas de asignacin de nombres en

    Visual BasicPara dar nombre a procedimientos, constantes, variables y argumentos en un mdulo

    de Visual Basic han de seguirse las siguientes reglas:

    El primer carcter de be ser una letra. En el nombre no se pueden utilizar espacios, puntos (.), signos de interjeccin (!),

    ni los caracteres @, &, $,# .

    El nombre no pued e tener ms de 255 caracteres de longitud. Como regla general, no se deben usar nombres iguales a los de los

    procedimientos Function , instrucciones y mtodos de Visual Basic. No obstante

    puede utilizar las mismas palabras clave que utiliza el lenguaje. Para utilizar una

    funcin intrnseca del lenguaje, o una instruccin o mtodo, cuyo nombre

    coincide con uno de los nombres asignados, es preciso entonces identificarlos

    explcitamente. Para ello se sita delante del nombre de la funcin intrnseca,

    instruccin o mtodo, el nombre de la biblioteca de tipos asociada. Por ejemplo,

    si utiliza una variable llamada Left, la nica forma de utilizar la funcin Left es

    escribiendo VBA.Left.

    Los no mbres no se p uede n repe tir dentro del mismo n ivel de alcance. Porejemplo, no se pueden declarar dos variables con el nombre edad dentro del

    mismo procedimiento. Sin embargo, se puede declarar una variable privada edad

    y una variable de nivel de p roced imiento llamada edad dent ro del mismo m dulo.

    Nota: Visual Basic no diferencia entre maysculas y minsculas, pero respeta la

    forma en que se escriben las instrucciones de declaracin de nombres.

    Declaracin de variables

    Para declarar variables se utiliza normalmente una instruccin Dim . La instruccin de

    declaracin puede incluirse en un procedimiento para crear una variable de nivel de

    procedimiento. O puede colocarse al principio de un mdulo, en la seccin Declarations,

    para crear una variab le d e nivel de md ulo.

    El siguiente ejemplo crea la variable NombreTexto y especficamente le asigna el tipo de

    datos String.

    http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_8.click%28%29/http://hhobj_9.click%28%29/http://hhobj_10.click%28%29/http://hhobj_11.click%28%29/http://hhobj_12.click%28%29/http://hhobj_13.click%28%29/http://hhobj_14.click%28%29/http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_7.click%28%29/http://hhobj_7.click%28%29/http://hhobj_7.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_4.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/http://hhobj_14.click%28%29/http://hhobj_13.click%28%29/http://hhobj_12.click%28%29/http://hhobj_11.click%28%29/http://hhobj_10.click%28%29/http://hhobj_9.click%28%29/http://hhobj_8.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    4/26

    Informtica Facultad de Ingeniera - UNNE 4

    Dim NombreTexto As String

    Si esta instruccin aparece dentro de un procedimiento, la variable NombreTexto se

    puede usar s lo en ese procedimiento . Si la instruccin aparece en la seccin

    Declarations del mdulo, la variable NombreTexto estar disponible en todos los

    procedimientos dentro del m dulo, pero para los restantes mdulos del proyecto. Para

    hacer que esta variable est disponible para todos los procedimientos de un proyecto,

    basta con comenzar la declaracin con la instruccin Public, tal y como muestra el

    siguiente ejemplo:

    Public NombreTexto As String

    Si desea ms informacin sobre cmo dar nombre a sus variables, puede consultar la

    seccin "Visual Basic Naming Rules" en la Ayuda de Visual Basic.

    Las variables se pu ede n d eclarar como d e u no de los siguientes tipos de dato s: Boolean,

    Byte , Integer, Long , Currency, Single , Double , Date , String (para cad enas d e longitud

    variable), String * longitud (para cadenas de longitud fija), Object, o Variant. Si no se

    especifica el tipo de datos, el tipo de datos Variant es el predefinido. Tambin es

    posible crear un tipo definido por el usuario empleando la instruccin Type . Si desea

    ms informacin sobre tipos de datos puede consultar la seccin "Tipo de datos

    Summary" en la Ayuda de Visual Basic.

    Se pueden declarar varias variables en una instruccin. Para especificar el tipo de datos

    se debe incluir un tipo de datos para cada variable. En la siguiente instruccin se

    declaran las variables intX, intY, e intZ como del tipo Integer.

    Dim intX As Integer, intY As Integer, intZ As Integer

    En la siguiente instruccin , intX e intY se de claran como de l tipo Variant; y slo intZ se

    declara como del tipo Integ er.

    Dim intX, intY, intZ As Integer

    No es necesario esp ecificar el tipo de datos en la instruccin de declaracin. Si se omite ,

    la variable ser del tipo Variant.

    Utilizar la instruccin Public

    La instruccin Public se puede utilizar para declarar variables pblicas de nivel de

    mdulo.

    Public NombreTexto As String

    Las variables pblicas se pueden usar en cualquier procedimiento del proyecto. Si una

    variable pb lica se declara en un mdulo estndaro en un md ulo de clase, tambin se

    podr usar en los proyectos referenciad os por el p royecto en que se declara la variab le

    pblica.

    Utilizar la instruccin Private

    http://hhobj_8.click%28%29/http://hhobj_9.click%28%29/http://hhobj_10.click%28%29/http://hhobj_11.click%28%29/http://hhobj_11.click%28%29/http://hhobj_10.click%28%29/http://hhobj_9.click%28%29/http://hhobj_8.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    5/26

    Informtica Facultad de Ingeniera - UNNE 5

    La instruccin Private se pued e usar para de clarar variab les privadas de nivel de m dulo,

    no dentro de procedimientos (all se declara con Dim y las variables siempre son

    privad as a l procedimiento).

    Private MiNombre As String

    Las variab les Private pued en ser usad as nicamente po r procedimientos pe rtene cientesal mismo mdulo.

    Nota: Cuando se utiliza a nivel de mdulo, la instruccin Dim es equivalente a la

    instruccin Private. Sera aconsejable usar la instruccin Private para facilitar la lectura

    y comprensin del cdigo.

    Utilizar la instruccin Static

    Cuando se utiliza la instruccin Static en lugar de la instruccin Dim , la variable

    declarada mantendr su valor ent re llamadas sucesivas.

    Utilizar la instruccin Option Explicit

    En Visual Basic se puede declarar implcitamente una variable usndola en una

    instruccin de asignacin. Tod as las variables q ue se de finen implcitam ente son de l tipo

    Variant . Las variab les d el tipo Variant consumen ms recursos d e memo ria q ue la m ayor

    parte de las otros tipo s de variab les. Su aplicacin se r ms eficiente si se declaran

    explcitamente las variables y se les asigna un tipo de datos especfico. Al declararse

    explcitamente las variables se reduce la posibilidad de errores de nombres y el uso de

    nombres errneos.

    Si no desea que Visual Basic realice declaraciones implcitas, puede incluir en un mdulo

    la instruccin Option Explicit antes d e tod os los procedimientos. Esta instruccin exige

    que todas las variables del mdulo se declaren explcitamente. Si un mdulo incluye la

    instruccin Option Explicit, se producir un error en tiempo de compilacin cuando

    Visual Basic encuentre un nombre de variable que no ha sido previamente declarado, o

    cuyo nomb re se ha escrito incorrectamente.

    Se puede seleccionar una opcin del entorno de programacin de Visual Basic para

    incluir automticamente la instruccin Option Explicit en todos los nuevos mdulos.

    Consulte la documentacin de su aplicacin para encontrar la forma de modificar las

    opciones de entorno de Visual Basic. Tenga en cuenta que esta opcin no tiene ningn

    efecto sobre el cdigo q ue se haya escrito con an terioridad .

    Nota: Las matrices fijas y dinmicas siempre se tiene que declarar explcitamente.

    Declaracin de matrices

    http://hhobj_12.click%28%29/http://hhobj_12.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    6/26

    Informtica Facultad de Ingeniera - UNNE 6

    Las matrices se declaran igual que las restantes variables, utilizando instrucciones Dim ,

    Static, Private, o Public. La diferencia ent re las variab les escalares (aquellas q ue no son

    matrices) y las variables matriz es que normalmente se debe especificar el tamao de la

    matriz. Una m atriz con un t amao especificado es un a matriz de tam ao fijo. Una m atriz

    cuyo tamao puede cambiar mientras el programa se est ejecutando es una matriz

    dinmica.

    Si una matriz se indexa desde 0 desde 1 depende del valor de la instruccin Option

    Base . Si Option Base 1 no se especifica, todos los ndices de matrices comienzan en

    cero.

    Declarar una matriz fija

    En la siguiente lnea de cdigo se declara como matriz Integer una matriz de tamao

    fijo con 11 filas y 11 columnas:

    Dim MiMatriz(10, 10) As Integer

    El primer argumento corresponde al nmero de filas y el segundo al nmero de

    columnas.

    Como sucede en cualquier otra declaracin de variable, a menos que se especifique

    para la matriz un tipo de datos, los elementos de sta sern del tipo Variant. Cada

    elemento numrico Variant de la matriz utiliza 16 bytes. Cada elemento de cadena

    Variant utiliza 22 bytes. Para escribir cdigo de la forma ms compacta posible, debe

    declarar explcitamente sus matrices con un tipo de datos distinto a Variant. Las

    siguientes lneas de cdigo comparan el tamao de varias matrices:

    ' Una matriz Integer utiliza 22 bytes (11 elementos * 2 bytes).ReDim MiMatrizInteger(10) As Integer

    ' Una matriz Double-precision utiliza 88 bytes (11 elementos * 8 bytes).ReDim MiMatrizDoble(10) As Double

    ' Una matriz Variant utiliza al menos 176 bytes (11 elementos * 16 bytes).ReDim MiMatrizVariant(10)

    ' La matriz Integer utiliza 100 * 100 * 2 bytes (20.000 bytes).ReDim MiMatrizInteger(99, 99) As Integer

    ' La matriz Double-precision utiliza 100 * 100 * 8 bytes (80.000 bytes).ReDim MiMatrizDoble (99, 99) As Double

    ' La matriz Variant utiliza al menos 160.000 bytes (100 * 100 * 16 bytes).ReDim MiMatrizVariant(99, 99)

    El tamao mximo de una matriz depende del sistema operativo y de la cantidad de

    memoria disponible. Es ms lento utilizar una matriz que sobrepasa la cantidad de

    memo ria RAM dispo nible en el sistem a ya que los d ato s tienen q ue ser ledos y escritos

    de l disco.

    Declarar una m atriz dinmica

    http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    7/26

    Informtica Facultad de Ingeniera - UNNE 7

    Al declarar una matriz dinmica se puede cambiar el tamao de una matriz mientras

    que el cdigo se est ejecutando. Para declarar una matriz dinmica se usan las

    instrucciones Static, Dim, Private, o Public, dejando los parntesis vacos, tal y como se

    muestra en el siguiente ejemplo.

    Dim MatrizSingle() As Single

    Nota: Se puede usar la instruccin ReDim para declarar implcitamente una matriz

    dentro de un procedimiento. Tenga cuidado para no cambiar el nombre de la matriz

    cuando use la instruccin ReDim , ya que se crear una segunda matriz incluso en el

    caso d e q ue se haya incluido la instruccin Option Explicit en el mdulo.

    La instruccin ReDim se puede utilizar en un procedimiento, dentro del alcance de la

    matriz, para cambiar el nmero de dimensiones, definir el nmero de elementos y para

    definir los lmites supe rior e inferior p ara cada dimensin. Se pue de usar la instruccin

    ReDim para modificar la matriz dinmica cuantas veces sea necesario. Sin embargo,cada vez que se hace, se pierden los valores almacenados en la matriz. Se puede usar la

    instruccin ReDim Preserve para ampliar una matriz conservando los valores que

    contiene. Por ejemplo, la siguiente instruccin aade 10 nuevos elementos a la matriz

    MatrizVar sin pe rder los valores almacenad os en los e lementos o riginales.

    ReDim Preserve MatrizVar(UBound(MatrizVar) + 10)

    Nota: Cuando se utiliza la palab ra clave Preserve con una matriz dinmica, slo se

    puede cambiar el lmite superior de la ltima dimensin, no pud iendo modificarse el

    nmero de dimensiones.

    Declaracin de constantes

    Al declarar una constante, se puede asignar a un valor un nombre que tenga algn

    sign ificado ap rop iad o. La instruccin Const se u tiliza para de clarar una constante y darle

    valor. Una constante no puede modificarse o cambiar de valor una vez que ha sido

    declarada.

    Se puede declarar una constante dentro de un procedimiento o al principio de un

    mdulo, en la se ccin de Declarations. Las constan tes a nivel de mdulo son privadas, a

    menos que se especifique lo contrario. Para declarar una constante pblica a nivel de

    mdulo, la instruccin Const debe ir precedida por la palab ra clave Public. Se puede

    declarar explcitamente una constante como privada colocando la palabra clave Private

    antes de la instruccin Const para facilitar la lectura y comprensin del cdigo. Si desea

    ms informacin, consulte la seccin "Comprender el alcance y la visibilidad" en la

    Ayuda de Visual Basic.

    El siguiente ejemp lo declara la constante PublicEdadCon como un Integer y le a signa el

    valor34.

    http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    8/26

    Informtica Facultad de Ingeniera - UNNE 8

    Public Const EdadCon As Integer = 34

    Las constantes se pued en d eclarar de uno de los siguientes tipos d e d atos: Boolean,

    Byte , Integer, Long , Currency, Single , Double , Date , String , o Variant. Dado q ue ya se

    conoce el valor de una constante, es muy fcil elegir el tipo de datos en la instruccin

    Const. Si desea ms informacin sobre tipos de datos, consulte la seccin "Tipo de

    datos" en la Ayuda de Visual Basic.

    En un a so la instruccin se p ued en declarar varias constantes. Para espe cificar un t ipo de

    datos, deb e incluirse e l tipo de d ato s para cada constante . En la siguiente instruccin se

    declaran como Integer las constantes EdadCon y SalarioCon.

    Const EdadCon As Integer = 34, SalarioCon As Currency = 35000

    Creando procedimiento s recursivos

    Los procedimientos tienen un espacio limitado para almacenarvariables. Cada vez que

    un procedimiento se llama a s mismo, consume ms de ese espacio. Un procedimiento

    que se llama a s mismo es lo que se conoce como un procedimiento recursivo. Un

    procedimiento recursivo que se llama cont inuamente a s mismo producir finalmente

    un e rror. Por ejemplo:

    Function Agotar(Mximo)Agotar = Agotar(Mximo)

    End Function

    Este error puede resultar menos evidente cuando dos procedimientos se llaman uno al

    otro de forma indefinida, o cuando nunca se cumple la condicin definida como fin de

    un b ucle. Las funciones recursivas tienen diverso s usos. Por ejemplo, el siguiente

    procedimiento utiliza u na funcin recursiva para calcular e l facto rial:

    Function Factorial (N)If N

  • 7/23/2019 VBA Excel.pdf

    9/26

    Informtica Facultad de Ingeniera - UNNE 9

    Un nuevo estudio de la lgica del procedimiento. A menudo es posible sustituirbucles anidados p or un procedimiento recursivo.

    Creando bucles mediante cdigo

    Mediante el uso de instrucciones condicionales e instrucciones de bucle (tambin

    conocidas como estructuras de control) es posible escribir cdigo de Visual Basic que

    tome decisiones y repita determinadas acciones. Otra estructura de control til, la

    instruccin With, permite e jecuta r una serie d e instruccione s sin necesidad de recalificar

    un objeto.

    Utilizar instrucciones co ndicionales para tomar decisione s

    Las instrucciones condicionales evalan si una condicin es True o False (verdadera o

    falsa) y a cont inuacin especifican las instruccione s a ejecutar en funcin de l resultado .

    Normalmente, una cond icin es una expresin que utiliza un operador de comparacinpara comparar un valor o variable con otro.

    Eleg ir la instruccin condicional a utilizar:

    If...Then...Else: salta a u na instruccin cuando una con dicin es True o False Select Case: seleccin de la instruccin a ejecutar en funcin de un conjunto de

    condiciones

    Utilizar bucles para repetir cdigo

    Empleando bucles es posible ejecutar un grupo de instrucciones de forma repetida.

    Algunos bucles repiten las instrucciones hasta que una condicin es False, otros las

    repiten hasta q ue la cond icin es True . Hay tambin bu cles q ue repiten un conjunto de

    instrucciones un nmero determinado de veces o una vez para cada objeto de una

    coleccin.

    Eleg ir el bucle a ut ilizar:

    Do...Loop: sigue en e l bucle mient ras o hasta una condicin sea True . For...Next: utiliza un contador para ejecutar las instrucciones un nmero

    determinado de veces. For Each...Next: repite e l grupo de instrucciones p ara cada uno de los ob jeto s de

    una coleccin .

    Ejecutar varias instruccione s so bre e l mismo objeto

    Normalmente, en Visual Basic, debe esp ecificarse un objeto antes d e poder e jecutar uno

    de sus mtodos o cambiar una de sus propiedades. Se puede usar la instruccin With

    para esp ecificar un objeto una so la vez para una serie completa de instruccione s.

    With: Ejecuta r una se rie d e instruccione s sobre el mismo objeto

    Utilizando instrucciones If...Then...Else

    http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_8.click%28%29/http://hhobj_9.click%28%29/http://hhobj_9.click%28%29/http://hhobj_8.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    10/26

    Informtica Facultad de Ingeniera - UNNE 10

    Se puede usar la instruccin If...Then...Else para ejecutar una instruccin o bloque de

    instrucciones determinadas, dependiendo del valor de una condicin. Las instrucciones

    If...Then...Else se pueden anidar en tantos niveles como sea necesario. Sin embargo,

    para ha cer ms leg ible el cdigo es aconse jab le siempre que se pueda utilizar una

    instruccin Select Case en vez de recurrir a mltiples niveles de instrucciones

    If...Then...Else anidadas.

    Ejecutar una so la instruccin cuando una co ndicin e s True:

    Para ejecutar una sola instruccin cuando una condicin es True , se puede usar la

    sintaxis de lnea nica de la instruccin If...Then...Else. El siguiente ejemplo muestra la

    sintaxis de lnea nica, en la qu e se omite el uso d e la palabra clave Else :

    Sub FijarFecha()miFecha = #13/2/95#If miFecha < Now Then miFecha = Now

    End Sub

    Para ejecutar ms de una lnea de cdigo, es preciso utilizar la sintaxis de mltiples

    lneas. Esta sintaxis incluye la inst ruccin End If, tal como muestra e l siguiente ejemp lo:

    Sub AvisoUsuario(valor as Long)If valor = 0 Then

    Aviso.ForeColor = "Red"Aviso.Font.Bold = TrueAviso.Font.Italic = True

    End IfEnd Sub

    Ejecutar unas instrucciones de terminadas si una co ndicin e s True y e jecutar otras

    si es False:

    Use una instruccin If...Then...Else para definir do s bloq ues de instruccione s ejecutab les:

    un bloque que se ejecutar cuando la cond icin es True y el otro que se ejecutar si la

    cond icin es False .

    Sub AvisoUsuario(valor as Long)If valor = 0 Then

    Aviso.ForeColor = vbRedAviso.Font.Bold = TrueAviso.Font.Italic = True

    ElseAviso.Forecolor = vbBlackAviso.Font.Bold = FalseAviso.Font.Italic = False

    End IfEnd Sub

    Comprobar una seg unda condicin si la prime ra condicin es False:

    Se pueden aadir instrucciones ElseIf a una instruccin If...Then...Else para comprobar

    una segunda condicin si la primera es False. Por ejemplo, el siguiente procedimiento

    funcin calcula una bonificacin salarial dependiend o de la clasificacin de l trabajador.

    La instruccin que sigue a la instruccin Else slo se ejecuta cuando las condiciones de

    todas las restantes instrucciones Ify ElseIfso n False .

    http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    11/26

    Informtica Facultad de Ingeniera - UNNE 11

    Function Bonificacin(rendimiento, salario)If rendimiento = 1 Then

    Bonificacin = salario * 0.1ElseIf rendimiento = 2 Then

    Bonificacin= salario * 0.09ElseIf rendimiento = 3 Then

    Bonificacin = salario * 0.07Else

    Bonificacin = 0End If

    End Function

    Utilizar instrucciones For...Next

    Las instrucciones For...Next se pueden utilizar para repetir un bloque de instrucciones

    un nm ero dete rminad o de veces. Los bu cles For usan una variable contado r cuyo valor

    se aum enta o d isminuye cad a vez que se e jecuta e l bucle.

    El siguien te procedimiento hace que el equipo emita u n son ido 50 veces. La instruccin

    For determina la variable contador x y sus valores inicial y final. La instruccin Next

    incrementa el valor de la variab le con tad or en 1.

    Sub Bips()For x = 1 To 50

    BeepNext x

    End Sub

    Mediante la palabra clave Step, se puede aumentar o disminuir la variable contador enel valor que se d esee. En e l sigu iente ejemplo, la variab le co ntad orj se increme nta en 2

    cada vez que se repite la ejecucin del bucle. Cuando el bucle deja de ejecutarse, total

    representa la suma de 2, 4, 6, 8 y 10.

    Sub DosTotal()For j = 2 To 10 Step 2

    total = total + jNext jMsgBox "El total es " & total

    End Sub

    Para disminuir la variable contador utilice un valor negativo en Step. Para disminuir la

    variable contado r es preciso especificar un valor final que sea menor que el valor inicial.

    En el siguiente ejemplo, la variable contadormiNum se disminuye en 2 cada vez que se

    repite el bucle. Cuando termina la ejecucin del bucle, total representa la suma de 16,

    14, 12, 10, 8, 6, 4 y 2.

    Sub NuevoTotal()For miNum = 16 To 2 Step -2

    total = total + miNumNext miNum

    MsgBox "El total es " & totalEnd Sub

    http://hhobj_3.click%28%29/http://hhobj_4.click%28%29/http://hhobj_5.click%28%29/http://hhobj_6.click%28%29/http://hhobj_6.click%28%29/http://hhobj_5.click%28%29/http://hhobj_4.click%28%29/http://hhobj_3.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    12/26

    Informtica Facultad de Ingeniera - UNNE 12

    Nota: No es necesario incluir el nombre de la variable contador despus de la

    instruccin Next. En los ejemplos anteriores, el nombre de la variable contador se ha

    incluido para facilitar la lectura del cdigo .

    Se puede abandonar una instruccin For...Next antes de que el contador alcance su

    valor final, para ello se utiliza la instruccin Exit For.

    Instruccin SETSetvariable_objeto= {[New] expresin_objeto | Nothing }

    La sintaxis de la instruccin Set consta d e las siguientes pa rtes:

    Parte Descripcin

    variable_objeto Requerido. Nombre de la variable o de la propiedad; sigue lasconvenciones estnd ar de nomb res de variables.

    New Opcional. New se utiliza normalmente durante una declaracin

    para permitir la creacin imp lcita de un objeto. Cuand o utiliza

    Ne w con la instruccin Set se crea una nueva instancia de la

    clase. Si variable_objeto contena una referencia a un objeto,

    esta referencia se libera cuand o se asigna el nuevo ob jeto. La

    palab ra clave Ne w no se puede utilizar para crear nuevas

    instancias de cualquier tipo de datos intrnseco ni para crear

    objetos depe ndientes.

    expresin_objeto Requerido. Expresin que consiste en el nombre de un objeto,

    otra variable declarada del mismo tipo de objetos, o una

    funcin o mtodo que devuelve un objeto del mismo tipo de

    objeto.

    Nothing Opcional. Interrumpe una asociacin de variable_objeto con

    cualquier objeto especfico. Al asignar Nothing a

    variable_objeto se liberan todos los recursos del sistema y de

    memoria asociados con el objeto al que se hizo referenciapreviamente cuando ninguna otra variab le se refiere a l.

    Comentarios

    Para ser vlido, variable_objeto debe ser un tipo de objeto coherente con el objeto que

    se le ha asignad o.

    Las instrucciones Dim , Private, Public, ReDim y Static slo declaran una variable que

    se refiere a un objeto. No se har referencia a ningn objeto real hasta que use la

    instruccin Set para asignar un ob jeto especfico.

    http://hhobj_6.click%28%29/http://hhobj_7.click%28%29/http://hhobj_8.click%28%29/http://hhobj_9.click%28%29/http://hhobj_10.click%28%29/http://hhobj_11.click%28%29/http://hhobj_11.click%28%29/http://hhobj_10.click%28%29/http://hhobj_9.click%28%29/http://hhobj_8.click%28%29/http://hhobj_7.click%28%29/http://hhobj_6.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    13/26

    Informtica Facultad de Ingeniera - UNNE 13

    El siguiente ejemplo ilustra el uso de Dim para declarar una matriz del tipo Form1.

    Actualmente no existe ninguna instancia de Form1. Set asigna referencias a nuevas

    instancias de Form1 a la variable misFormulariosSecundarios. Este cdigo se podra

    utilizar para crear formularios secundarios en una aplicacin MDI.Dim misFormulariosSecundarios(1 to 4) As Form1Set misFormulariosSecundarios(1) = New Form1

    Set misFormulariosSecundarios(2) = New Form1Set misFormulariosSecundarios(3) = New Form1Set misFormulariosSecundarios(4) = Nwq Form1

    Generalmente, cuando usa Set para asignar una referencia de objeto a una variable, no

    se crea ninguna copia del objeto para esa variable. En su lugar se crea una referencia al

    objeto. Ms de una variable de objeto se puede referir al mismo objeto. Puesto que

    estas variab les so n referencias al ob jeto (no copias de l), cualquier cambio en el objeto

    se refleja en todas las variables que se refieren a l. No obstante, cuando utiliza la

    palab ra clave New en la instruccin Set, en realidad est creando una instancia del

    objeto.

    Conjunto Range

    Rep resen ta un a celda, una fila, una co lumna, una seleccin d e celdas q ue contienen uno

    o m s bloqu es contiguo s de celdas o un rang o 3D.

    Uso del conjunto Range

    Vamos a ver los siguientes m tod os y prop ied ades pa ra devolver un objeto Range :

    Propiedad Range Propiedad Cells Range y Cells Propiedad Offset Mtodo Union

    Propiedad Range

    Use Range(arg), donde arg asigna un nombre al rango, para devolver un objeto Range

    que represente una sola celda o un rango de celdas. El ejemplo siguiente coloca el valor

    de la ce lda A1 en la ce lda A5.

    Worksheets("Hoja1").Range("A5").Value = _Worksheets("Hoja1").Range("A1").Value

    El ejemplo siguiente rellena el rango A1:H8 con nmeros aleatorios estableciendo lafrmula d e cad a celda d el rango . La p ropiedad Rang e, si se emp lea sin un calificado r de

    objeto (un objeto colocado a la izquierda del punto), devuelve un rango de la hoja

    http://hhobj_12.click%28%29/http://hhobj_13.click%28%29/http://hhobj_13.click%28%29/http://hhobj_12.click%28%29/
  • 7/23/2019 VBA Excel.pdf

    14/26

    Informtica Facultad de Ingeniera - UNNE 14

    activa. Si la ho ja activa no e s una hoja de clculo, este mtod o no se llevar a cab o con

    xito. Use el mtodo Activate para activar una ho ja de clculo antes de usar la

    propied ad Range sin un calificador d e objeto explcito .

    Worksheets("Hoja1").ActivateRange("A1:H8").Formula = "=Rand()" ' El rango est en la hoja activa

    El ejemplo siguiente b orra el contenido del rang o d eno minado Criterios.Worksheets(1).Range("Criteria").ClearContents

    Si usa un argume nto de texto para la direccin de l rango , deber esp ecificar la d ireccin

    en notacin de estilo A1 (no p od r usar la n otacin F1C1).

    Propiedad Cells

    Use Cells(fila; columna), do nd e fila e s el nd ice d e fila y columna es el nd ice d e columna,

    para devolver una so la celda . El ejemplo siguien te establece en 24 el valor de la celdaA1.

    Worksheets(1).Cells(1, 1).Value = 24

    El ejemplo siguiente establece la frmula de la celda A2.

    ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

    Aunque tambin puede usar Range("A1") para devolver la celda A1, en algunas

    ocasiones la propiedad Cells puede ser ms conveniente, ya que permite usar una

    variable para la fila o la columna. El ejemplo siguiente crea encabezados de fila ycolumna en la Hoja1. Tenga en cuenta que, despus de activar la hoja de clculo, puede

    usar la propiedad Cells sin una declaracin explcita de hoja (devuelve una celda de la

    ho ja activa).

    Sub SetUpTable()Worksheets("Hoja1").ActivateFor Ao = 1 To 5

    Cells(1, Ao + 1).Value = 1990 + AoNext AoFor Cuarto = 1 To 4

    Cells(Cuarto + 1, 1).Value = "Q" & CuartoNext CuartoEnd Sub

    Aunque podra usar funciones de cadena de Visual Basic para modificar las referencias

    de estilo A1, es mucho ms sencillo (y una mejor prctica de programacin) usar la

    notacin Cells(1, 1).

    Para devolver parte de un rango use expresin.Cells(fila; columna), donde expresin es

    una expresin que devuelve un o bjeto Range yfila y columna son relativas a la e squina

    supe rior izquierda de l rang o. El ejemplo sigu iente establece la frmula de la celda C5.

    Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

  • 7/23/2019 VBA Excel.pdf

    15/26

    Informtica Facultad de Ingeniera - UNNE 15

    Ejemp los us ando la propiedad cel ls al objeto w orksheets

    Este e jemplo e stablece en 14 punto s el tamao de fuente de la celda C5 de Hoja1.

    Worksheets("Hoja1").Cells(5, 3).Font.Size = 14

    Este e jem plo bo rra la frmula de la celda uno d e Hoja1.

    Worksheets("Hoja1").Cells(1).ClearContents

    Este e jemplo estab lece en Arial de 8 punto s la fuente y el tamao de fuen te de tod as las

    celdas de Hoja1.

    With Worksheets("Hoja1").Cells.Font.Name = "Arial".Size = 8

    End With

    Este ejemp lo ejecuta un bucle en las ce ldas A1:J4 de Hoja1. Si una d e las celdas con tiene

    un valor meno r que 0,001, el ejemplo reemplazar d icho valor por cero (0).

    For rwIndex = 1 to 4For colIndex = 1 to 10

    With Worksheets("Hoja1").Cells(rwIndex, colIndex)If .Value < .001 Then .Value = 0

    End WithNext colIndex

    Next rwIndex

    Este ejemp lo establece e l estilo de fuente de las celdas A1:C5 de Hoja1 como cursiva.Worksheets("Hoja1").ActivateRange(Cells(1, 1), Cells(5, 3)).Font.Italic = True

    Este ejemplo examina una columna de datos denominada "miRango". Si una celda

    contiene el mismo valor que la celda inmediatamente superior, el ejemplo mostrar la

    direccin d e la celda q ue con tiene los dato s dup licado s.

    Set r = Range("miRango")For n = 1 To r.Rows.Count

    If r.Cells(n, 1) = r.Cells(n + 1, 1) Then

    MsgBox "Hay duplicacin en " & r.Cells(n + 1, 1).AddressEnd If

    Next n

    Range y Cells

    Para devolver un objeto Range use Range(celda1; celda2), donde celda1 y celda2 son

    objetos Range que especifican las celdas inicial y final. El ejemplo siguiente establece el

    estilo de lnea de los b orde s de las ce ldas A1:J10.

    With Worksheets(1).Range(.Cells(1, 1), _

    .Cells(10, 10)).Borders.LineStyle = xlThick

  • 7/23/2019 VBA Excel.pdf

    16/26

    Informtica Facultad de Ingeniera - UNNE 16

    End With

    Observe el punto delante de cada propiedad Cells. El punto es necesario si el resultado

    del enunciado With precedente se aplica a la propiedad Cells, en cuyo caso, se indica

    que las celdas estn en la hoja de clculo uno (sin el punto, la propiedad Cells

    de volvera las ce ldas de la ho ja activa).

    Propiedad Offset

    Use Offset(fila; colum na ), donde fila y columna son los desplazamientos de fila y

    columna, para devolver un rango con un desp lazamiento especfico con respecto a otro.

    El ejemplo siguiente selecciona la celda situada tres filas debajo y una columna a la

    derecha de la celda de la esquina superior izquierda de la seleccin actual. No se puede

    seleccionar una celda que no est en la hoja activa, por lo que primero deber activar la

    hoja.

    Worksheets("Hoja1").Activate'Can't select unless the sheet is active

    Selection.Offset(3, 1).Range("A1").Select

    Mtodo Union

    Use Union(rango1, rango2, ...) para devolver rangos de varias reas, es decir, rangos

    compuestos por dos o ms bloques contiguos de celdas. El ejemplo siguiente crea un

    ob jeto d efinido como la unin d e los rangos A1:B2 y C3:D4 y, a continuacin, selecciona

    el rang o d efinido.

    Dim r1 As Range, r2 As Range, myMultiAreaRange As RangeWorksheets("Hoja1").ActivateSet r1 = Range("A1:B2")Set r2 = Range("C3:D4")Set myMultiAreaRange = Union(r1, r2)myMultiAreaRange.Select

    La prop ied adAreases muy til para traba jar con se leccione s que contienen varias reas.

    Divide una seleccin de varias reas en objetos Range individuales y despus devuelve

    los ob jeto s en forma d e conjunto. Puede usar la p ropiedadCountdel conjunto devuelto

    para comprobar una se leccin que contiene varias reas, como se muestra en elsiguiente ejemplo.

    Sub NoMultiAreaSelection()NumberOfSelectedAreas = Selection.Areas.CountIf NumberOfSelectedAreas > 1 Then

    MsgBox "No puede utilizar este comando " & _"en una seleccin multi-reas"

    End IfEnd Sub

    Otras propiedades y ejemplos

  • 7/23/2019 VBA Excel.pdf

    17/26

    Informtica Facultad de Ingeniera - UNNE 17

    Propiedad ActiveCell

    Devuelve un objeto Range que representa la celda activa de la ventana activa (la

    ventana superior) o de la ventana especificada. Si la ventana no contiene una hoja de

    clculo, esta propiedad fallar. Es de slo lectura.

    Comentar ios

    Si no especifica un calificador de objeto, esta propiedad devolver la celda activa de la

    ventana activa.

    Celda activa no es lo mismo que seleccin. La celda activa es una sola celda de la

    seleccin actual. La seleccin p ued e con ten er ms de una ce lda, pero slo una es la

    celda activa.

    Tod as las expresiones siguientes d evuelven la ce lda activa y son e quivalentes:

    ActiveCellApplication.ActiveCellActiveWindow.ActiveCellApplication.ActiveWindow.ActiveCell

    Ejemplo

    Este ejemplo usa un cuadro de mensaje para mostrar el valor de la celda activa. Puesto

    que la propiedad ActiveCell falla si la hoja activa no es una hoja de clculo, el ejemploactivar Hoja1 ante s de utilizar la p ropiedad ActiveCell.

    Worksheets("Hoja1").ActivateMsgBox ActiveCell.Value

    En este e jemplo se cambia el formato de fuente de la celda activa.

    Worksheets("Hoja1").ActivateWith ActiveCell.Font

    .Bold = True

    .Italic = True

    End With

    Propiedad Column

    Devuelve el nmero de la primera columna del primer rea del rango especificado.

    Long de slo lectura.

    Comentar ios

    Column A de vuelve 1, column B de vuelve 2 y as sucesivamente.

  • 7/23/2019 VBA Excel.pdf

    18/26

    Informtica Facultad de Ingeniera - UNNE 18

    Para devolver e l nmero de la ltima column a del rango , use la siguiente expresin:

    myRange.Columns(myRange.Columns.Count).Column

    Ejemplo

    Este e jemplo e stablece en 4 puntos el ancho d e las columnas salteadas d e Hoja1.

    For Each col In Worksheets("Hoja1").ColumnsIf col.Column Mod 2 = 0 Then

    col.ColumnWidth = 4End If

    Next col

    Propiedad Columns

    Prop ied ad Columns tal como se aplica al ob jeto App lication.

    Devuelve un objeto Range que representa todas las columnas de la hoja de clculo

    activa. Si el documento activo no es una hoja de clculo, esta propiedad fallar. Es de

    slo lectura.

    expresin.Columns

    expresin: Req uerida . Expresin que d evuelve un objeto d e la lista Aplicar a.

    Prop ied ad Columns ta l como se ap lica al objeto Range .

    Devuelve un objeto Range que representa las columnas del rango especificado. Es de

    slo lectura.

    expresin.Columns

    expresin: Req uerida . Expresin que d evuelve un objeto d e la lista Aplicar a.

    Prop ied ad Columns ta l como se ap lica al objeto WorkSheet.

    Devuelve un objeto Range que representa todas las columnas de la hoja de clculo

    especificada. Es de slo lectura.

    expresin.Columns

    expresin: Req uerida . Expresin que d evuelve un objeto d e la lista Aplicar a.

    Para obtener informacin sobre cmo devolver un solo elemento de un conjunto,

    consulte Devolver un objeto d e un con junto .

  • 7/23/2019 VBA Excel.pdf

    19/26

    Informtica Facultad de Ingeniera - UNNE 19

    Comentar iosEl uso d e e sta p ropiedad sin calificado r de o bjeto equivale a usarActiveSheet.Columns.

    Si se a plica a un ob jeto Range que sea una seleccin de varias reas, la propiedad slo

    devolver las columnas de la primera rea del rango. Por ejemplo, si el objeto Range

    tiene dos reas - A1:B2 y C3:D4 - Selection.Columns.Count devuelve 2, no 4. Si deseautilizar esta propiedad en un rango que puede contener una seleccin de varias reas,

    compruebe Areas.Count para d ete rminar si el rango contiene ms de una rea. En ese

    caso, ejecute u n bucle sob re cada rea de l rango.

    EjemploEste e jemplo da formato d e ne grita a la fuente de la columna uno (column a A) de Hoja1.

    Worksheets("Hoja1").Columns(1).Font.Bold = True

    Este ejemplo establece como 0 (cero) el valor de todas las celdas de la columna uno del

    rango deno minado "miRango ".

    Range("miRango").Columns(1).Value = 0

    Este ejemplo muestra el nmero de columnas de la seleccin de Hoja1. Si se ha

    seleccionad o ms de una rea, el ejemp lo e jecutar un bucle en cada rea.

    Worksheets("Hoja1").ActivateareaCount = Selection.Areas.CountIf areaCount

  • 7/23/2019 VBA Excel.pdf

    20/26

    Informtica Facultad de Ingeniera - UNNE 20

    Devuelve e l nmero d e la primera fila d e la primera rea de l rango . Long de slo lectura.

    EjemploEste e jem plo establece en 4 punto s el alto de las filas alternat ivas de Hoja1.

    For Each rw In Worksheets("Hoja1").Rows

    If rw.Row Mod 2 = 0 Thenrw.RowHeight = 4

    End IfNext rw

    Propiedad Rows

    Para un objeto Application , devuelve u n o bjeto Range que representa todas las filas de

    la hoja de clculo activa. Si el documento activo no es una hoja de clculo, esta

    propied ad fallar. Para un objeto Range , devuelve un objeto Range que representa lasfilas d el rango especificado . Para u n o bjeto Worksheet, devuelve un objeto Range que

    representa todas las filas de la hoja de clculo especificada. Objeto Range de slo

    lectura.

    Comentar iosPara obtener informacin sobre cmo devolver un solo elemento de un conjunto,

    consulte Devolver un objeto d e un con junto .

    El uso d e e sta p ropiedad sin calificado r de ob jeto eq uivale a usarActiveSheet.Rows.

    Si se aplica a un objeto Range que es una seleccin mltiple, la propiedad slo

    devolver las filas de la primera rea del rango. Por ejemplo, si el objeto Range tiene

    dos reas -A1:B2 y C3:D4- Selection.Rows.Count devuelve 2, no 4. Si desea utilizar esta

    propied ad en un rang o que puede contene r una se leccin mltiple, compruebe

    Areas.Count para determinar si el rango es una seleccin mltiple. En ese caso, ejecute

    un bucle sob re cada rea d el rango , como se muestra en el tercer ejemplo.

    Ejemplo

    Este ejemplo e limina la fila t res d e Hoja1.

    Worksheets("Hoja1").Rows(3).Delete

    Este ejemplo elimina las filas de la regin actual de la hoja de clculo uno en las que el

    valor de la celda uno de la fila e s el mismo que el valor de la celda uno de la fila ante rior.

    For Each rw In Worksheets(1).Cells(1, 1).CurrentRegion.Rowsthis = rw.Cells(1, 1).ValueIf this = last Then rw.Deletelast = this

    Next

  • 7/23/2019 VBA Excel.pdf

    21/26

    Informtica Facultad de Ingeniera - UNNE 21

    Este ejemplo m uest ra e l nmero de filas d e la se leccin de Hoja1. Si se h a se lecciona do

    ms d e una rea, el ejemplo ejecutar un b ucle en cada rea.

    Worksheets("Hoja1").ActivateareaCount = Selection.Areas.CountIf areaCount

  • 7/23/2019 VBA Excel.pdf

    22/26

    Informtica Facultad de Ingeniera - UNNE 22

    Si se define el valor o la frmula de una celda como una fecha, Microsoft Excel

    comprobar si dicha celda ya tiene uno de los formatos numricos de fecha u hora. De

    lo contrario, cambiar el formato numrico al formato numrico de fecha corto

    predeterminado.

    Si el rang o tiene una o do s dimensiones, pued e d efinir la frmula conforme a una matrizde Visual Basic de las mismas dimensiones. Asimismo, es posible introducir la frmula

    en una matriz de Visual Basic.

    Si define la frmula para un rango de varias celdas, se rellenarn todas las celdas del

    rango con la frmula.

    Ejemplo

    Este ejemp lo e stab lece la frmula de la ce lda A1 de Hoja1.

    Worksheets("Hoja1").Range("A1"). Formula = "=$A$4+$A$10"

    Propiedad Value

    Verem os ta l como se ap lica al objeto Range .

    Devuelve o establece e l valor del rango esp ecificado . Variant de Lectura/ Escritura.

    expresin.Value(RangeValueDataType)

    expresin: Requerida. Expresin que devuelve un objeto Range .

    RangeValueDataType:Variant opcional. Tipo de datos del valor del rango. Puede ser

    una constantexlRangeValueDataType .

    xlRang eValueDataType pued e ser una de estas con stan tes xlRang eValueDataType .

    xlRangeValueDefault:default. Si el objeto Range est vaco, devuelve el valorEmpty

    (utilice la funcin IsEmpty para comprobar si este es el caso). Si el objeto Range

    contiene ms de una celda, devuelve una matriz de valores (utilice la funcin IsArray

    para comprobar ese caso ).

    xlRangeValueMSPersistXML: Devuelve la representacin del conjunto de registros del

    objeto Range expecificado en formato XML.

    xlRang eValueXMLSpreadsheet: Devuelve los valores, formatos, frmulas y nombres

    del objeto Range especificado en formato de hoja de clculo XML.

  • 7/23/2019 VBA Excel.pdf

    23/26

  • 7/23/2019 VBA Excel.pdf

    24/26

  • 7/23/2019 VBA Excel.pdf

    25/26

    Informtica Facultad de Ingeniera - UNNE 25

    Para seleccionar un rango de sde la celda hasta 10 celdas a la izqu ierda :Range("A20", Range("A20").Offset(0, -10)).SelectRange(ActiveCell, ActiveCell.Offset(0, -10)).Select

    Para seleccionar un rango d esde la celda hasta 10 celdas hacia abajo:Range("a2", Range("a2").Offset(10, 0)).SelectRange(ActiveCell, ActiveCell.Offset(10, 0)).Select

    Para seleccionar la p rimera celda vaca e n una co lumna:Range("A1").End(xlDown).Offset(1, 0).Select

    Para seleccionar la primera celda vaca en una fila:Range("A1").End(xltoRight).Offset(0,1).Select

    Para rede finir el tamao de l rango (de A1:B5 a A1:D10)

    Nota: un rango no es e xpandido sino que se redefine desde la celda activa.Selection.Resize(4, 10).Select

    y noSelection.Resize(2, 5).Select

    Si queremos seleccionar celdas que llamamos Var_1, Var_2 y Var_3, podemos usar el

    siguiente bucle:Sub asigna()

    For i = 1 To 3varNo1 = "Var_" & iRange([varNo1]).Select

    ....--- cualquier proceso con la celda seleccionada ---Next i

    End Sub

  • 7/23/2019 VBA Excel.pdf

    26/26

    GLOSARIO

    evento

    Evento es to da accin que puede ser reconocida por un objeto, como puede ser el clic

    del mouse o la pulsacin de una tecla, y para la que es posible escribir cdigo como

    respuesta. Los evento s pue den ocurrir como resultado de una accin d el usuario o d el

    cdigo del programa, tambin pueden ser originado s por el sistema.

    instruccin

    Una unidad sintcticamente completa que expresa un tipo de accin, declaracin o

    definicin. Normalmente una instruccin tiene una sola lnea aunque es posible utilizar

    dos puntos (:) para poner ms de una instruccin en una lnea. Tambin se puede

    utilizar un carcter de continuacin de lnea (_) para continuar una sola lnea lgica en

    una segunda lnea fsica. Si desea realizar un comentario, colocar al principio de la lnea

    la palabra REM o el signo apstrofe (').

    mtodo

    Un proced imiento que se ap lica a un o bjeto.

    mdulo

    Un conjunto de declaracione s y procedimientos.

    objeto (object)

    Un objeto representa un elemento de una aplicacin, como una hoja de clculo, una

    celda, un diagrama, un formulario o un informe. En cdigo de Visual Basic, un objeto

    debe identificarse antes de que se pueda aplicar uno de los mtodos del objeto o

    camb iar el valor de un a de sus propiedades.

    propiedad (propertie)

    Un atributo con n ombre d e un o bjeto. Las prop iedad es de finen caractersticas de

    objetos, como tamao, color y ubicacin en la pantalla, o comportamientos de objetos,

    como si est o no habilitado .

    procedimiento (procedure)Una secuencia con nombre de instrucciones que se ejecutan como una unidad. Por

    ejemplo, Function, Property y Sub son todos tipos de procedimientos. Un nombre de

    procedimiento siempre se define a nivel de mdulo. Todo el cdigo ejecutable debe

    estar contenido en un proced imiento . Los p rocedimiento s no se p ued en a nidar de ntro

    de otros procedimientos. Es similar al concepto con el que antes llevaba el nombre de

    macros

    http://www.excel-vba-access.com/vba-excel-tips-objects.htmhttp://www.excel-vba-access.com/vba-excel-tips-objects.htm