SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
CURSO - TALLER DE:




       PROGRAMACIÓN
        VBA EN EXCEL




Rpm # 995155060
Celular Movistar: 959969912
Correo: Excelservicios@hotmail.com
Web: www.excelservicios.com
Blog: www.actiweb.es/macros/




                       2013
2



DIAGRAMA DE FLUJO: LÓGICA DE UN PROGRAMA


                  INICIO



               PLANTEAMIENTO
               DEL PROBLEMA    (ALGORITMO)
                PROBLLGRAMA



               ESCRITURA DEL   (CODIFICACIÓN)
                 PROGRAMA




                COMPILACIÓN




          SI
                 ¿ERROR?        (SINTAXIS)

                NO

                 EJECUCIÓN




     SI
                 ¿ERROR?        (LÓGICO)

                NO

                 RESULTADO




                     FIN
3



                        VBA EN EXCEL
¿QUE ES UNA MACRO?

Una macro son un conjunto de instrucciones que sirven para automatizar
procesos. Refiriéndonos a Excel, supongamos que realizamos frecuentemente la
acción de seleccionar un rango para aplicarle negrita, cambio de fuente y entrado.
En lugar de hacer estas acciones manualmente, se puede elaborar una macro e
invocarla para que ejecute los tres procesos automáticamente.

LOS OBJETOS DE EXCEL
Todos los objetos de Excel tienen propiedades y métodos. Visual Basic para
Aplicación (VBA), el lenguaje de macros de Excel, es una herramienta con el que
se podrá controlar los objetos de Excel manipulando sus propiedades y
métodos.
Para construir una aplicación en Excel, debemos comprender los conceptos de
objetos, propiedades y métodos, así como conocer los detalles específicos
sobre propiedades y métodos de los objetos de Excel.

Conceptos básicos de Programación Orientada a Objetos
1- Objeto

Un objeto es una entidad que tiene asociado un conjunto de métodos, eventos y
propiedades.

Ejemplo: Una caja de texto (TextBox) en la cual podemos escribir cualquier línea
es un objeto.

2- Propiedades

Son las características que poseen un objeto o un formulario (ventana de
Windows).

Ejemplo: Color de fondo del formulario, Fuente de texto de un TextBox,….

3- Métodos

Los métodos son funciones internas de un determinado objeto que permite
realizar funciones sobre él o sobre otro objeto.

Ejemplo: Mostrar en la ventana del formulario "Hola mundo", por tanto pondremos
el método -> form1.Print "Hola mundo"
4


4- Eventos

Los eventos son acciones que se pueden realizar en cualquier control: click,
doble click, movimiento del mouse. A estos eventos se les puede asociar
código para que se ejecute al producir el evento.
Un programa VBA es un POE (Programa orientado a eventos).
Todo lo que hacemos en un programa VBA está generado por medio de eventos

5- Explicación integrada y ejemplo de Objetos, Propiedades, Métodos y
Eventos.

Los formularios y controles de VBA son objetos que exponen sus propios
métodos, propiedades y eventos. Las propiedades se pueden considerar como
atributos de un objeto, los métodos como sus acciones y los eventos como sus
respuestas.

Un objeto de uso diario como el globo de un niño tiene también propiedades,
métodos y eventos. Entre las propiedades de un globo se incluyen atributos
visibles como el peso, el diámetro y el color. Otras propiedades describen su
estado (inflado o desinflado) o atributos que no son visibles, como su edad. Por
definición, todos los globos tienen estas propiedades; lo que varía de un globo a
otros son los valores de estas propiedades.

Un globo tiene también métodos o acciones inherentes que puede efectuar. Tiene
un método inflar (la acción de llenarlo de helio) o un método desinflar (expeler su
contenido) y un método elevarse (si se deja escapar). De nuevo, todos los globos
pueden efectuar estos métodos.
Los globos tienen además respuestas predefinidas a ciertos eventos externos. Por
ejemplo, un globo respondería al evento de pincharlo desinflándose o al evento
de soltarlo elevándose en el aire.
Los objetos tienen propiedades, responden a eventos y ejecutan métodos:
5

.
Si se pudiera programar un globo, el código de VBA podría ser como el siguiente

SINTAXIS: Para asignar un valor a la propiedad de un objeto.


     Objeto.Propiedad = Valor

Para establecer las propiedades del globo:

Globo.Color = Rojo
Globo.Diámetro = 10
Globo.Inflado = Trae

Observe la sintaxis del código: el objeto (Globo) seguido de la propiedad (Color)
seguida de la asignación del valor (Rojo). Podría modificar el color del globo desde
el código si repitiera esta instrucción y sustituyera el valor por otro diferente.
Las propiedades también se pueden establecer en la ventana Propiedades
mientras se está diseñando la aplicación.

Los métodos de un globo se invocan de esta forma:

SINTAXIS: Para llamar a un método.


      Objeto.Método

Globo.Inflar
Globo.Desinflar
Globo.Elevar 5

La sintaxis es similar a la sintaxis de las propiedades: el objeto (un nombre)
seguido de un método (un verbo). En el tercer ejemplo hay un elemento adicional,
llamado argumento, que indica la distancia que se eleva. Algunos métodos
tendrán uno o más argumentos para describir más a fondo la acción que se va a
ejecutar.

El globo puede responder a un evento como se muestra a continuación:

Sub Globo_Pinchazo()
     Globo.Desinflar
     Globo.HacerRuido "Bang"
     Globo.Inflado = False
     Globo.Diámetro = 1
End Sub
6


En este caso, el código describe el comportamiento del globo cuando se produce
un evento Pinchazo: invoca el método Desinflar y luego invoca el método
HacerRuido con un argumento “Bang” (el tipo de ruido que se va a hacer). Como
el globo ya no está inflado, la propiedad Inflado tiene el valor False y la propiedad
Diámetro adopta un nuevo valor.

Si bien no puede programar un globo, sí puede programar un formulario o un
control de VBA. Como programador, tiene el control: decide qué propiedades se
deben modificar, qué métodos se deben invocar o a qué eventos hay que
responder para conseguir la apariencia y el comportamiento deseados

Repasemos a continuación todos estos conceptos pero ahora desde el punto de
vista de algunos de los objetos que nos encontraremos en Excel como
WorkSheet (Objeto hoja de cálculo) o Range (Objeto celda o rango de celdas).

Un objeto Range está definido por una clase donde se definen sus propiedades,
recordemos que una propiedad es una característica, modificable o no, de un
objeto. Entre las propiedades de un objeto Range están Value, que contiene el
valor de la casilla, Column y Row que contienen respectivamente la fila y la
columna de la casilla, Font que contiene la fuente de los caracteres que muestra
la casilla, etc.

Range, como objeto, también tiene métodos, recordemos que los métodos sirven
llevar a cabo una acción sobre un objeto. Por ejemplo el método Activate, hace
activa una celda determinada, Clear, borra el contenido de una celda o rango de
celdas, Copy, copia el contenido de la celda o rango de celdas en el
portapapeles,...

La siguiente tabla muestra algunas referencias de estilo A1 utilizando el método
Range.
                    REFERENCIA                      SIGNIFICADO
             Range("A1")                   Celda A1
             Range("A1:B5")                Celdas de la A1 a la B5
             Range("C5:D9,G9:H16")         Selección de varias áreas
             Range("A:A")                  Columna A
             Range("1:1")                  Fila 1
             Range("A:C")                  Columnas de la A a la C
             Range("1:5")                  Filas de la 1 a la 5
             Range("1:1,3:3,8:8")          Filas 1, 3 y 8
7

             Range("A:A,C:C,F:F")         Columnas A, C y F

Conjuntos.

Un conjunto es una colección de objetos del mismo tipo, para los que conozcan
algún lenguaje de programación es un array de objetos. Por ejemplo, dentro de
un libro de trabajo puede existir más de una hoja (WorkSheet), todas las hojas de
un libro de trabajo forman un conjunto, el conjunto WorkSheets.
Cada elemento individual de un conjunto se referencia por un índice, de esta
forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarán
por WorkSheets (1), WorkSheets (2) y WorkSheets (3).

Objetos de Objetos.

Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el
coche, una de las propiedades del coche es el motor, y el motor es un objeto con
propiedades como cubicaje, caballos, número de válvulas, etc. y métodos, como
aumentar_revoluciones, coger_combustible, mover_pistones, etc.

En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto,
Range tiene la propiedad Font que es también un objeto y Font tiene la propiedad
Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente
Propiedades de un objeto que serán también Objetos. Dicho de otra forma, hay
propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto
WorkSheet devuelve un objeto de tipo Range

Programación Orientada a Objetos o Programación Basada en Objetos.

Hay una sutil diferencia entre las definiciones del título. Programación orientada a
Objetos, significa que el programador trabaja con objetos fabricados por él mismo,
es decir, el programador es quien implementa las clases para luego crear objetos
a partir de ellas. Lo que haremos nosotros, por el momento, será utilizar objetos ya
definidos por la aplicación Excel (WorkSheets, Range,...) sin implementar
ninguno de nuevo, por lo que en nuestro caso es más correcto hablar de
programación basada en objetos. Observe que esta es una de las grandes
ventajas de la POO, utilizar objetos definidos por alguien sin tener que conocer
nada sobre su implementación, sólo debemos conocer sus propiedades y métodos
y utilizarlos de forma correcta.

Bueno, después de esta extensa pero necesaria introducción pasemos ya a hacer
alguna cosa en Excel. No es necesario que se aprenda lo anterior al pié de la letra
y tampoco es necesario que lo comprenda al cien por cien, sólo téngalo presente
para las definiciones que vienen a continuación y verá como va asimilando los
conceptos de Objeto, propiedades, métodos, etc.

El editor de Visual Basic es la aplicación que utilizaremos para construir las
8

macros que interactuaran junto con los libros de trabajo. A continuación
prepararemos un archivo en el que escribiremos las primeras instrucciones en
Visual Basic.
Preparar un archivo nuevo
Para entrar en el editor de Visual Basic, ejecute los pasos siguientes.

1. Active opción Botón de Office/ Opciones de Excel/ Mostrar ficha
   Programador.




2. Se mostrará la Ficha Programador en la Cinta de Opciones.
9

3. Maximice la ventana para trabajar más cómodamente y procure tener
   activadas la ventana Explorador de proyectos y la Ventana Propiedades
   (Ver/ Explorador de proyectos y Ver/ Ventana propiedades).




Insertar módulo.
10

INSERTAR UN NUEVO MÓDULO.

Un módulo sirve para agrupar procedimientos y funciones. El procedimiento y la
función son entidades de programación que sirven para agrupar instrucciones de
código que realizan una acción concreta.

Para insertar un módulo active opción del menú Insertar/ Módulo. Se activará una
nueva ventana, si aparece demasiado pequeña, maximícela.




Ya hemos dicho que un procedimiento es un bloque de instrucciones de código
que sirven para llevar a cabo alguna tarea específica. Un procedimiento empieza
siempre con la instrucción

Sub Nombre_Procedimiento()
Y termina con la instrucción

End Sub
A continuación crearemos un procedimiento para poner el texto "Hola" en la celda
A1.
11

Ejemplo 1

Sub Primero()

      Range ("A1").Value = "Hola"

End Sub

Observe el código.

Range("A1").Value="Hola"

En esta línea estamos indicando que trabajamos con un objeto Range. Para
indicarle que nos referimos a la celda A1, encerramos entre paréntesis esta
referencia (más adelante verá otra forma de referirnos a las celdas). De este
objeto, indicamos que queremos establecer un nuevo valor para la propiedad
Value, observe que para separar el objeto de su propiedad utilizamos la notación
punto.

Recuerde que el conjunto Range es un objeto que pende del objeto WorkSheets,
así por ejemplo el siguiente código haría lo mismo que el anterior.

      WorkSheets(1).Range ("A1").Value = "Hola"

Bueno, de hecho no hace lo mismo, en la primera opción, el texto "Hola" se pone
dentro de la celda A1 de la hoja activa, mientras que en el segundo es en la celda
A1 de primera hoja (del conjunto de hojas). La segunda notación es más larga,
pero también más recomendable ya que se especifican todos los objetos. En
muchas ocasiones se pueden omitir algunos objetos precedentes, no le
aconsejamos hacerlo, sus programas perderán claridad y concisión.
Si desea hacer referencia a la hoja activa puede utilizar ActiveSheet, así, el
primer ejemplo lo dejaremos de la manera siguiente.

            Sub Primero()

                  ActiveSheet.Range("A1").Value = "Hola"

            End Sub

Ejecutar un procedimiento o función.

Pruebe ejecutar el primer procedimiento de ejemplo.

1.   Sitúe el cursor dentro del procedimiento.
2.   Active opción de la barra de menús Ejecutar/ Ejecutar Sub Userform.

También puede hacer clic sobre el botón
     o pulsar la tecla F5.
12

Para ejecutar el procedimiento desde la hoja de cálculo.

Debe estar en una hoja, no en el editor de Visual Basic

1.   Active opción de la barra de menús Herramientas/ Macro/ Macros. Se
     despliega una ventana que muestra una lista donde estás todas las macros
     incluidas en el libro de trabajo.

2.   Seleccione la macro de la lista y pulse sobre el botón Ejecutar.

En este segundo ejemplo simplemente ampliaremos la funcionalidad de la macro
del ejemplo1. Además de escribir "Hola" en la celda A1 de la celda A1, la
pondremos en negrita y le daremos color al texto. Para ello utilizaremos las
propiedades Bold y Color del objeto Font.

Sub Segundo()

ActiveSheet.Range("A1").Value = "Hola"
ActiveSheet.Range("A1").Font.Bold = True
ActiveSheet.Range("A1").Font.Color = RGB(255,0,0)

End Sub

True.

True, que traducido es verdadero, simplemente indica que la propiedad Bold está
activada. Si se deseara desactivar, bastaría con igualarla al valor False.

La función RGB.

Observe que para establecer el color de la propiedad se utiliza la función RGB
(Red, Green, Blue), los tres argumentos para esta función son valores del 0 a 255
que corresponden a la intensidad de los colores Rojo, Verde y Azul
respectivamente.

Referenciar un rango de celdas.

Sólo tiene que cambiar a la forma Celda_Inicial:Celda_Final. Por ejemplo aplicar
el último ejemplo al rango de celdas que va de la A1 a la A8, ponga.

Sub Segundo()

        ActiveSheet.Range("A1:A8").Value = "Hola"
        ActiveSheet.Range("A1:A8").Font.Bold = True
        ActiveSheet.Range("A1:A8").Font.Color = RGB(255,0,0)

End Sub
13

A continuación vamos a repetir el programa Ejemplo1, pero en lugar de poner
"Hola" en la celda A1 de la hoja activa, dejaremos que el usuario entre un texto
desde teclado y a continuación guardaremos ese valor en esa celda. Observe que
el valor que ingresó el usuario debe guardarse en algún lugar para poder ponerlo
después en la celda A1; pues bien, ese valor se guardará en una variable.

Una variable es simplemente un trozo de memoria que la función o procedimiento
se reserva para guardar datos, la forma general de declarar una variable es

      Dim Nom_var As Tipo.

Siendo variable el nombre que se asigna a la misma y Tipo el tipo de datos que se
guardarán (números, texto, fecha, booleanos,...).

En nuestro ejemplo, declararemos la variable de tipo String (tipo texto), y lo
haremos de la forma siguiente.

      Dim Texto As String

Con esto estamos indicando que se reserve un trozo de memoria (el que sea), que
se llama Texto y que el tipo de datos que se guardarán ahí serán caracteres.

FUNCIÓN InputBox.

Esta función muestra una ventana para que el usuario pueda teclear datos.
Cuando se pulsa sobre Aceptar, los datos entrados pasan a la variable a la que
se ha igualado la función. Vea la línea siguiente.

      Texto = InputBox("Introduzca el texto", "Entrada de datos").

Si en la ventana que muestra InputBox pulsa sobre el botón Aceptar, los datos
tecleados se guardarán el la variable Texto.

Sintaxis de InputBox.

InputBox(Mensaje, Título, Valor por defecto, Posición horizontal, Posición
Vertical, Archivo ayuda, Número de contexto para la ayuda).

Mensaje : Es el mensaje que se muestra en la ventana. Si desea poner más de
una línea ponga Chr(13) para cada nueva línea, vea el ejemplo siguiente.

Título : Es el título para la ventana InputBox. Es un parámetro opcional.

Valor por defecto: Es el valor que mostrará por defecto el cuadro donde el
usuario entra el valor.
14

PARÁMETRO OPCIONAL.

Posición Horizontal: La posición X de la pantalla donde se mostrará el cuadro,
concretamente es la posición para la parte izquierda. Si se omite el cuadro se
presenta horizontalmente centrado a la pantalla.

Posición Vertical: La posición Y de la pantalla donde se mostrará el cuadro,
concretamente es la posición para la parte superior. Si se omite el cuadro se
presenta verticalmente centrado a la pantalla.

Archivo Ayuda: Es el archivo que contiene la ayuda para el cuadro. Parámetro
opcional.

Número de contexto para la ayuda: Número asignado que corresponde al
identificador del archivo de ayuda, sirve para localizar el texto que se debe
mostrar. Si se especifica este parámetro, debe especificarse obligatoriamente el
parámetro Archivo Ayuda.

Sub Entrar_Valor()

Dim Texto As String

      ' Chr(13) sirve para que el mensaje se muestre en dos Líneas
      Texto = InputBox("Introducir un texto " & Chr(13) & "Para la celda A1",
      "Entrada de datos")
      ActiveSheet.Range("A1").Value = Texto

End Sub

Este ejemplo también se puede hacer sin variables.

Sub Entrar_Valor()

      ActiveSheet.Range("A1").Value = InputBox("Introducir un texto " &
      Chr(13) & "Para la celda A1", "Entrada de datos")

End Sub

Ejemplo 4

Repetiremos el ejemplo 3, pero en lugar de entrar los valores sobre la celda A1,
haremos que el usuario pueda elegir en que celda quiere entrar los datos, es decir,
se le preguntará al usuario mediante un segundo Inputbox sobre que celda quiere
entrar el valor del primer Inputbox. Serán necesarias dos variables, una para
guardar la celda que escoja el usuario y otra para guardar el valor.
15

Option Explicit
Sub Entrar_Valor()

Dim Celda As String
Dim Texto As String

      Celda = InputBox("En que celda quiere entrar el valor", "Entrar Celda")
      Texto = InputBox("Introducir un texto " & Chr(13) & "Para la celda " & Celda
      , "Entrada de datos")
      ActiveSheet.Range(Celda).Value = Texto

End Sub

En visual basic no es necesario declarar las variables, por ejemplo, en el programa
anterior se hubiera podido prescindir de las líneas

      Dim Celda As String
      Dim Texto As String

A pesar de ello, le recomendamos que siempre declare las variables que va a
utilizar, de esta forma sabrá cuales utiliza el procedimiento y que tipo de datos
guarda cada una, piense que a medida que vaya aprendiendo, creará
procedimientos cada vez más complicados y que requerirán el uso de más
variables, si no declara las variables al principio del procedimiento ocurrirán dos
cosas:
Primero, las variables no declaradas son asumidas como tipo Variant (este es un
tipo de datos que puede almacenar cualquier valor, número, fechas, texto, etc.
pero tenga en cuenta que ocupa 20 Bytes y para guardar una referencia a una
casilla, la edad de alguien, etc. no son necesarios tantos bytes).

Segundo, reducirá considerablemente la legibilidad de sus procedimientos ya que
las variables las irá colocando a medida que las necesite, esto, a la larga
complicará la corrección o modificación del procedimiento.

Bueno, pues toda la explicación anterior es para que declare todas las variables
que va a utilizar.

La sentencia Option Explicit al principio del módulo fuerza a que se declaren
todas las variables. Si al ejecutar el programa, se encuentra alguna variable sin
declarar se producirá un error y no se podrá ejecutar el programa hasta que se
declare.
16

Conversión de Tipos de datos.
Copie el siguiente Ejemplo. Simplemente se piden dos números, se suman y se
guardan en la celda A1 de la hoja activa.

Ejemplo 5

Option Explicit

Sub Sumar()

Dim Numero1 As Integer
Dim Numero2 As Integer
Numero1 = InputBox("Entrar el primer valor", "Entrada de datos")
Numero2 = InputBox("Entrar el primer valor", "Entrada de datos")
ActiveSheet.Range("A1").Value = Numero1 + Numero2

End Sub

Ahora, vuelva a ejecutar el programa y cuando se le pide el primer valor teclee
"Hola". Observe que el programa se detiene indicando un error en el tipo de datos.
Efectivamente, observe que la función InputBox devuelve siempre datos tipo
String, en el primer ejemplo no ha habido ningún problema, al entrar caracteres
numéricos, estos pueden asignarse a variables tipo Integer porque Visual Basic
hace automáticamente la conversión, pero al entrar texto e intentarlo asignar a una
variable Integer Visual Basic muestra un error indicando que la variable no es
adecuada para los datos que se desean guardar.
Para solucionar estos problemas se deben utilizar funciones de conversión de tipo.
Estas funciones, como su nombre indica, convierten datos de un tipo a otro, de
String a Integer, de Integer a String, de Date a String,... Así el procedimiento
anterior quedaría.

Option Explicit

Sub Sumar()

Dim Numero1 As Integer
Dim Numero2 As Integer

      Numero1 = Val(InputBox("Entrar el primer valor", "Entrada de datos"))
      Numero2 = Val(InputBox("Entrar el primer valor", "Entrada de datos"))
      ActiveSheet.Range("A1").Value = Numero1 + Numero2

End Sub

La función Val (Dato String), convierte una cadena de caracteres a valor
numérico. Si la cadena a convertir contiene algún carácter no numérico devuelve
0. Así, si al pedir un valor se teclea "Hola", la función Val, devolverá un cero.
17

                                     TIPOS DE DATOS
     TIPO: Determina la naturaleza del dominio de valores que puede tomar una
     variable, las operaciones en que puede participar y el espacio de memoria que
     necesita.

     CLASIFICACIÓN:
                                                 TIPOS DE
                                                  DATOS



     TIPOS              TIPO                         TIPOS                      TIPO                    TIPO
                                                 ESTRUCTURADOS              PROCEDIMIENTO             PUNTERO
    SIMPLES            CADENA
      ORDINALES

ENTEROS                                      ARRAYS
BOOLEAN                                      SET
CHAR                                         RECORD
ENUMERADO                                    FILE

SUBRANGO

  NO ORDINALES

REALES




     TIPOS ENTEROS:

             TIPO                         RANGO                                        MEMORIA

            Integer                  -32768 a 32767                                         2 Bytes

            Long           -2”147‟483,648 a 2”147‟483,647                                   4 Bytes


            TIPOS REALES:

             TIPO                         RANGO                                        MEMORIA

            Single                 3.4E-45 a 3.4E+38                                        4 Bytes

            Double               1.7E-308 a 1.7E+308                                        8 Bytes


            TIPO CADENA:

             TIPO                         RANGO                                        MEMORIA

            String      „a‟..‟z‟, „A‟..‟Z‟, „0‟..‟9‟,‟+‟.‟-„,‟*‟,‟/‟,etc.                   1 Byte
18

                     EXPRESIONES Y OPERADORES
1.- EXPRESIÓN: Es un conjunto de operandos mas operadores.

       EXPRESIÓN = OPERANDOS + OPERADORES
                    Variables   *,+,-,/,div,mod,etc.
                   Constantes
EJM:
a) 5 * 4
b) ( X + 6 ) / 8
c) 80 div 5
d) not ( X > Y )
e) ( X < 80 ) and ( X > 40 )

2.- OPERADORES: Se utiliza para formar expresiones.

TIPOS:
   A) OPERADORES MATEMÁTICOS:

     OPERADOR        OPERACIÓN          TIPO DE             TIPO DE
                                       OPERANDO           RESULTADO
        +         Suma                   E ó R               E ó R
        -         Resta                  E ó R               E ó R
        *         Multiplicación         E ó R               E ó R
        /         División Real            E                   E
                 División Entera          E                   E
       Mod        Residuo                  E                   E

B)     OPERADORES BOOLEANOS(LÓGICOS):

     OPERADOR        OPERACIÓN          TIPO DE             TIPO DE
                                       OPERANDO           RESULTADO
       Not         Negación Lógica        bool                bool
       And           And Lógica           bool                bool
        Or            Or Lógica           bool                bool

C)     OPERADORES RELACIONES(CONDICIONALES):

     OPERADOR        OPERACIÓN             TIPO DE          TIPO DE
                                         OPERANDOS        RESULTADO
         =        Igual               Tipos Compatibles     boolean
        <>        No igual            Tipos Compatibles     boolean
         <        Menor que           Tipos Compatibles     boolean
         >        Mayor que           Tipos Compatibles     boolean
        <=        Menor o igual que   Tipos Compatibles     boolean
        >=        Mayor o igual que   Tipos Compatibles     boolean
19

                      ESTRUCTURAS BÁSICAS

A) ESTRUCTURAS SECUENCIALES
Constan esencialmente de sucesivos pasos, uno detrás de otro.

Sintaxis:

<Instrucciones 1>

<Instrucciones 2>

<Instrucciones 3>
        .
        .
        .
<Instrucciones n>


B) ESTRUCTURAS DE CONTROL CONDICIONAL
Las estructuras condicionales son instrucciones de programación que permiten
controlar la ejecución de un fragmento de código en función de si se cumple o no
una condición.


Estructuras de Decisión


   Estructura If ... Then
Esta estructura evalúa una condición específica y, si es verdadera, ejecuta todas
las instrucciones que le siguen a la palabra clave Then.

Sintaxis:

If <condición> Then

  <Instrucción>

End If
20

   Estructura If ... Then ... Else
Permite evaluar una condición, si la condición es verdadera ejecuta las
instrucciones debajo del If sino ejecuta las instrucciones debajo de la cláusula
Else.

Sintaxis:

If <condición> Then
    <Instrucciones 1>, ejecuta si condición es verdadera
Else
   <Instrucciones 2>, ejecuta si condición es falsa
End If


   Estructuras If ... Anidadas
Dentro de una estructura If puede ir otra, y dentro de esta otra y otra.

Sintaxis:

If <condición 1> Then
      <Instrucciones 1>, si condición 1 es verdadera
Else

   If <condición 2> Then
       <Instrucciones 2>, si condición 2 es verdadera
   Else

      If <condición 3> Then
         <Instrucciones 3>, si condición 3 es verdadera
         ........................
         ........................
     Else

         If <condición n> Then
           <Instrucciones n>, si condición n es verdadera
         Else
          <Instrucciones m>, si ninguna de las condiciones anteriores es verdadera
         End If

    End If

End If
.
.
.
21

   Estructura Select Case
Es una estructura que evalúa una determinada expresión que puede tener
múltiples alternativas de las cuales se podrá realizar una de ellas, en el caso que
sea verdadera sino se evaluaran las instrucciones de la parte falsa debajo de la
cláusula Case Else.

Sintaxis:

      Select Case <Expresion>

      Case valor 1                 {Sí valor 1 es verdad}

               <Instrucciones 1>

      Case valor 2                 {Sí valor 2 es verdad}

               <Instrucciones 2>

      Case valor 3                 {Sí valor 3 es verdad}

               <Instrucciones 3>
      .
      .
      .

      Case valor n

               <Instrucciones n> {Sí valor N es verdad}

      Case Else

          <Instrucciones m> {Sino son verdaderos los valores anteriores}

      End Select
22

C) ESTRUCTURAS DE BUCLES O REPETITIVAS
ELEMENTOS AUXILIARES
CONTADOR:

Es una variable de tipo entero que permite controlar el número de repeticiones que
puede dar un conjunto de instrucciones.
Los contadores se pueden inicializar con un valor de 0 ó 1, pero no
necesariamente.

Sintaxis:

Variable = Variable + valor

Ejm:

Cuáles de las siguientes expresiones, según la sintaxis es verdadera o falsa.

   1)   x=x+1             (       )
   2)   y=y+4             (       )
   3)   m=m+p             (       )
   4)   z=z–5             (       )
   5)   a=b+8             (       )


ACUMULADOR:

Es una variable recipiente que permite guardar un conjunto de valores que pueden
ser: entero, real o cadena.

Sintaxis:

Variable = Variable + variable1

Ejm:

Cuáles de las siguientes expresiones, según la sintaxis es verdadera o falsa.

   1)   x=x+y             (       )
   2)   p=p+q             (       )
   3)   m = m +3          (       )
   4)   t= t+v            (       )
   5)   a=b+c             (       )
23

ESTRUCTURAS REPETITIVAS
Son empleadas en procesos repetitivos basados en rangos o condiciones.

Estructuras Do While – Loop o Do Until – Loop.- Permiten ejecutar un conjunto
de instrucciones mientras que una condición sea verdadera.

Sintaxis:

Do While | Until <condición>

       <Instrucciones>, se ejecutan mientras condición sea verdadera

Loop

Estructuras Do – Loop While o Do – Loop Until.- Permiten ejecutar un conjunto
de instrucciones hasta que una condición sea verdadera o mientras la condición
sea falsa.

Sintaxis:

Do

       < Instrucciones>, se ejecutan mientras condición es falsa

Loop While | Until <condición>

Estructura While – Wend.- Permite repetir un conjunto de instrucciones mientras
una condición sea verdadera.

Sintaxis:

       While <condición>

              <Instrucciones> „Instrucciones a repetir mientras condición sea
                                verdadera

       Wend

Sentencia For – Next.- Permite repetir un conjunto de instrucciones desde un
valor inicial hasta un valor final.

Sintaxis:

       For var = Valor Inicial To var Final [Step incremento]

              <Instrucciones>    „Instrucciones a repetir

       Next [Contador]

Más contenido relacionado

La actualidad más candente

Lambda Expressions in Java
Lambda Expressions in JavaLambda Expressions in Java
Lambda Expressions in JavaErhan Bagdemir
 
List comprehensions
List comprehensionsList comprehensions
List comprehensionsJordi Gómez
 
Basic of Multithreading in JAva
Basic of Multithreading in JAvaBasic of Multithreading in JAva
Basic of Multithreading in JAvasuraj pandey
 
Control structures in Java
Control structures in JavaControl structures in Java
Control structures in JavaRavi_Kant_Sahu
 
Operators and Control Statements in Python
Operators and Control Statements in PythonOperators and Control Statements in Python
Operators and Control Statements in PythonRajeswariA8
 
Synchronization.37
Synchronization.37Synchronization.37
Synchronization.37myrajendra
 
Database object, sub query, Join Commands & Lab Assignment
Database object, sub query, Join Commands & Lab AssignmentDatabase object, sub query, Join Commands & Lab Assignment
Database object, sub query, Join Commands & Lab AssignmentArun Sial
 
Class 3 - PHP Functions
Class 3 - PHP FunctionsClass 3 - PHP Functions
Class 3 - PHP FunctionsAhmed Swilam
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsGanesh Samarthyam
 
Ejercicios Excel Avanzado
Ejercicios Excel AvanzadoEjercicios Excel Avanzado
Ejercicios Excel AvanzadoPatricia Ferrer
 

La actualidad más candente (20)

Java IO
Java IOJava IO
Java IO
 
JAVA OOP
JAVA OOPJAVA OOP
JAVA OOP
 
Exprimiendo el ORM de Django
Exprimiendo el ORM de DjangoExprimiendo el ORM de Django
Exprimiendo el ORM de Django
 
Ejercicios python
Ejercicios pythonEjercicios python
Ejercicios python
 
Lambda Expressions in Java
Lambda Expressions in JavaLambda Expressions in Java
Lambda Expressions in Java
 
List comprehensions
List comprehensionsList comprehensions
List comprehensions
 
SQL Views
SQL ViewsSQL Views
SQL Views
 
Basic of Multithreading in JAva
Basic of Multithreading in JAvaBasic of Multithreading in JAva
Basic of Multithreading in JAva
 
Control structures in Java
Control structures in JavaControl structures in Java
Control structures in Java
 
Operators and Control Statements in Python
Operators and Control Statements in PythonOperators and Control Statements in Python
Operators and Control Statements in Python
 
Synchronization.37
Synchronization.37Synchronization.37
Synchronization.37
 
Database object, sub query, Join Commands & Lab Assignment
Database object, sub query, Join Commands & Lab AssignmentDatabase object, sub query, Join Commands & Lab Assignment
Database object, sub query, Join Commands & Lab Assignment
 
Class 3 - PHP Functions
Class 3 - PHP FunctionsClass 3 - PHP Functions
Class 3 - PHP Functions
 
OOP and FP
OOP and FPOOP and FP
OOP and FP
 
Excepciones.pptx
Excepciones.pptxExcepciones.pptx
Excepciones.pptx
 
Java packages
Java packagesJava packages
Java packages
 
Macros y VBA tema 5
Macros y VBA tema 5Macros y VBA tema 5
Macros y VBA tema 5
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 Exams
 
Ejercicios Excel Avanzado
Ejercicios Excel AvanzadoEjercicios Excel Avanzado
Ejercicios Excel Avanzado
 
JavaScript Looping Statements
JavaScript Looping StatementsJavaScript Looping Statements
JavaScript Looping Statements
 

Destacado

Guia para programar_vba_excel
Guia para programar_vba_excelGuia para programar_vba_excel
Guia para programar_vba_exceldiegofmfm
 
Dispositivos red
Dispositivos redDispositivos red
Dispositivos redSeleniik
 
Instituto superior tecnológico experimental hector guananga
Instituto superior tecnológico experimental hector guanangaInstituto superior tecnológico experimental hector guananga
Instituto superior tecnológico experimental hector guanangaisrael668
 
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01Alejito Molina Serpa
 
examen final de exel
examen final de exelexamen final de exel
examen final de exelSENA
 
Macros en excel
Macros en excelMacros en excel
Macros en excelalejamu
 
Modulos y funciones en VBA
Modulos y funciones en VBAModulos y funciones en VBA
Modulos y funciones en VBAprofecesde
 
Exportar datos a excel y word con bd taller
Exportar datos a excel y word con bd tallerExportar datos a excel y word con bd taller
Exportar datos a excel y word con bd tallerjpalencia
 
Presentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en ExcelPresentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en ExcelRicardo Peláez Negro
 
Macros paso a paso
Macros paso a pasoMacros paso a paso
Macros paso a pasoVickypenagos
 
Ejercicios de excel con visual basic
Ejercicios de excel con visual basicEjercicios de excel con visual basic
Ejercicios de excel con visual basicAleckFong
 
Visual 2010 sql server 2008
Visual 2010 sql server 2008Visual 2010 sql server 2008
Visual 2010 sql server 2008Alex Vasquez
 
Practica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónPractica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónmilenka796
 

Destacado (20)

Guia para programar_vba_excel
Guia para programar_vba_excelGuia para programar_vba_excel
Guia para programar_vba_excel
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
Dispositivos red
Dispositivos redDispositivos red
Dispositivos red
 
Instituto superior tecnológico experimental hector guananga
Instituto superior tecnológico experimental hector guanangaInstituto superior tecnológico experimental hector guananga
Instituto superior tecnológico experimental hector guananga
 
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01
Tema02 estructurasdecontrolvbaexcel2010-130924093627-phpapp01
 
Ado.net
Ado.netAdo.net
Ado.net
 
examen final de exel
examen final de exelexamen final de exel
examen final de exel
 
MODULO
MODULOMODULO
MODULO
 
Macros en excel
Macros en excelMacros en excel
Macros en excel
 
Modulos y funciones en VBA
Modulos y funciones en VBAModulos y funciones en VBA
Modulos y funciones en VBA
 
Exportar datos a excel y word con bd taller
Exportar datos a excel y word con bd tallerExportar datos a excel y word con bd taller
Exportar datos a excel y word con bd taller
 
Presentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en ExcelPresentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en Excel
 
Vba para excel
Vba para excelVba para excel
Vba para excel
 
Macros paso a paso
Macros paso a pasoMacros paso a paso
Macros paso a paso
 
Presentacion macros
Presentacion macrosPresentacion macros
Presentacion macros
 
Introducción a macros
Introducción a macrosIntroducción a macros
Introducción a macros
 
Ejercicios de excel con visual basic
Ejercicios de excel con visual basicEjercicios de excel con visual basic
Ejercicios de excel con visual basic
 
Exposicion Macros
Exposicion MacrosExposicion Macros
Exposicion Macros
 
Visual 2010 sql server 2008
Visual 2010 sql server 2008Visual 2010 sql server 2008
Visual 2010 sql server 2008
 
Practica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónPractica de visual basic sistema de facturación
Practica de visual basic sistema de facturación
 

Similar a Curso taller vba macros

Similar a Curso taller vba macros (20)

Macros Excel
Macros ExcelMacros Excel
Macros Excel
 
Excel con macros
Excel con macrosExcel con macros
Excel con macros
 
Manual de macros2 pre
Manual de macros2 preManual de macros2 pre
Manual de macros2 pre
 
Macros en excel
Macros en excelMacros en excel
Macros en excel
 
Excel macros
Excel macrosExcel macros
Excel macros
 
Excel macros
Excel macrosExcel macros
Excel macros
 
Gran tutorial-de-macros
Gran tutorial-de-macrosGran tutorial-de-macros
Gran tutorial-de-macros
 
1. manual macrosexcel
1. manual macrosexcel1. manual macrosexcel
1. manual macrosexcel
 
Macros en excel [106 paginas en español]
Macros en excel [106 paginas   en español]Macros en excel [106 paginas   en español]
Macros en excel [106 paginas en español]
 
Megaguía macros y vba ayuda excel
Megaguía  macros y vba   ayuda excelMegaguía  macros y vba   ayuda excel
Megaguía macros y vba ayuda excel
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
Mod2ud1 2
Mod2ud1 2Mod2ud1 2
Mod2ud1 2
 
Nociones De Vba
Nociones De VbaNociones De Vba
Nociones De Vba
 
Visual basic 1º Año
Visual basic  1º AñoVisual basic  1º Año
Visual basic 1º Año
 
Star uml
Star umlStar uml
Star uml
 
Programacion java basica
Programacion java basicaProgramacion java basica
Programacion java basica
 
Herramienta calc
Herramienta calcHerramienta calc
Herramienta calc
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101
 

Curso taller vba macros

  • 1. CURSO - TALLER DE: PROGRAMACIÓN VBA EN EXCEL Rpm # 995155060 Celular Movistar: 959969912 Correo: Excelservicios@hotmail.com Web: www.excelservicios.com Blog: www.actiweb.es/macros/ 2013
  • 2. 2 DIAGRAMA DE FLUJO: LÓGICA DE UN PROGRAMA INICIO PLANTEAMIENTO DEL PROBLEMA (ALGORITMO) PROBLLGRAMA ESCRITURA DEL (CODIFICACIÓN) PROGRAMA COMPILACIÓN SI ¿ERROR? (SINTAXIS) NO EJECUCIÓN SI ¿ERROR? (LÓGICO) NO RESULTADO FIN
  • 3. 3 VBA EN EXCEL ¿QUE ES UNA MACRO? Una macro son un conjunto de instrucciones que sirven para automatizar procesos. Refiriéndonos a Excel, supongamos que realizamos frecuentemente la acción de seleccionar un rango para aplicarle negrita, cambio de fuente y entrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para que ejecute los tres procesos automáticamente. LOS OBJETOS DE EXCEL Todos los objetos de Excel tienen propiedades y métodos. Visual Basic para Aplicación (VBA), el lenguaje de macros de Excel, es una herramienta con el que se podrá controlar los objetos de Excel manipulando sus propiedades y métodos. Para construir una aplicación en Excel, debemos comprender los conceptos de objetos, propiedades y métodos, así como conocer los detalles específicos sobre propiedades y métodos de los objetos de Excel. Conceptos básicos de Programación Orientada a Objetos 1- Objeto Un objeto es una entidad que tiene asociado un conjunto de métodos, eventos y propiedades. Ejemplo: Una caja de texto (TextBox) en la cual podemos escribir cualquier línea es un objeto. 2- Propiedades Son las características que poseen un objeto o un formulario (ventana de Windows). Ejemplo: Color de fondo del formulario, Fuente de texto de un TextBox,…. 3- Métodos Los métodos son funciones internas de un determinado objeto que permite realizar funciones sobre él o sobre otro objeto. Ejemplo: Mostrar en la ventana del formulario "Hola mundo", por tanto pondremos el método -> form1.Print "Hola mundo"
  • 4. 4 4- Eventos Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del mouse. A estos eventos se les puede asociar código para que se ejecute al producir el evento. Un programa VBA es un POE (Programa orientado a eventos). Todo lo que hacemos en un programa VBA está generado por medio de eventos 5- Explicación integrada y ejemplo de Objetos, Propiedades, Métodos y Eventos. Los formularios y controles de VBA son objetos que exponen sus propios métodos, propiedades y eventos. Las propiedades se pueden considerar como atributos de un objeto, los métodos como sus acciones y los eventos como sus respuestas. Un objeto de uso diario como el globo de un niño tiene también propiedades, métodos y eventos. Entre las propiedades de un globo se incluyen atributos visibles como el peso, el diámetro y el color. Otras propiedades describen su estado (inflado o desinflado) o atributos que no son visibles, como su edad. Por definición, todos los globos tienen estas propiedades; lo que varía de un globo a otros son los valores de estas propiedades. Un globo tiene también métodos o acciones inherentes que puede efectuar. Tiene un método inflar (la acción de llenarlo de helio) o un método desinflar (expeler su contenido) y un método elevarse (si se deja escapar). De nuevo, todos los globos pueden efectuar estos métodos. Los globos tienen además respuestas predefinidas a ciertos eventos externos. Por ejemplo, un globo respondería al evento de pincharlo desinflándose o al evento de soltarlo elevándose en el aire. Los objetos tienen propiedades, responden a eventos y ejecutan métodos:
  • 5. 5 . Si se pudiera programar un globo, el código de VBA podría ser como el siguiente SINTAXIS: Para asignar un valor a la propiedad de un objeto. Objeto.Propiedad = Valor Para establecer las propiedades del globo: Globo.Color = Rojo Globo.Diámetro = 10 Globo.Inflado = Trae Observe la sintaxis del código: el objeto (Globo) seguido de la propiedad (Color) seguida de la asignación del valor (Rojo). Podría modificar el color del globo desde el código si repitiera esta instrucción y sustituyera el valor por otro diferente. Las propiedades también se pueden establecer en la ventana Propiedades mientras se está diseñando la aplicación. Los métodos de un globo se invocan de esta forma: SINTAXIS: Para llamar a un método. Objeto.Método Globo.Inflar Globo.Desinflar Globo.Elevar 5 La sintaxis es similar a la sintaxis de las propiedades: el objeto (un nombre) seguido de un método (un verbo). En el tercer ejemplo hay un elemento adicional, llamado argumento, que indica la distancia que se eleva. Algunos métodos tendrán uno o más argumentos para describir más a fondo la acción que se va a ejecutar. El globo puede responder a un evento como se muestra a continuación: Sub Globo_Pinchazo() Globo.Desinflar Globo.HacerRuido "Bang" Globo.Inflado = False Globo.Diámetro = 1 End Sub
  • 6. 6 En este caso, el código describe el comportamiento del globo cuando se produce un evento Pinchazo: invoca el método Desinflar y luego invoca el método HacerRuido con un argumento “Bang” (el tipo de ruido que se va a hacer). Como el globo ya no está inflado, la propiedad Inflado tiene el valor False y la propiedad Diámetro adopta un nuevo valor. Si bien no puede programar un globo, sí puede programar un formulario o un control de VBA. Como programador, tiene el control: decide qué propiedades se deben modificar, qué métodos se deben invocar o a qué eventos hay que responder para conseguir la apariencia y el comportamiento deseados Repasemos a continuación todos estos conceptos pero ahora desde el punto de vista de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto hoja de cálculo) o Range (Objeto celda o rango de celdas). Un objeto Range está definido por una clase donde se definen sus propiedades, recordemos que una propiedad es una característica, modificable o no, de un objeto. Entre las propiedades de un objeto Range están Value, que contiene el valor de la casilla, Column y Row que contienen respectivamente la fila y la columna de la casilla, Font que contiene la fuente de los caracteres que muestra la casilla, etc. Range, como objeto, también tiene métodos, recordemos que los métodos sirven llevar a cabo una acción sobre un objeto. Por ejemplo el método Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles,... La siguiente tabla muestra algunas referencias de estilo A1 utilizando el método Range. REFERENCIA SIGNIFICADO Range("A1") Celda A1 Range("A1:B5") Celdas de la A1 a la B5 Range("C5:D9,G9:H16") Selección de varias áreas Range("A:A") Columna A Range("1:1") Fila 1 Range("A:C") Columnas de la A a la C Range("1:5") Filas de la 1 a la 5 Range("1:1,3:3,8:8") Filas 1, 3 y 8
  • 7. 7 Range("A:A,C:C,F:F") Columnas A, C y F Conjuntos. Un conjunto es una colección de objetos del mismo tipo, para los que conozcan algún lenguaje de programación es un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir más de una hoja (WorkSheet), todas las hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto se referencia por un índice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarán por WorkSheets (1), WorkSheets (2) y WorkSheets (3). Objetos de Objetos. Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, número de válvulas, etc. y métodos, como aumentar_revoluciones, coger_combustible, mover_pistones, etc. En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es también un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente Propiedades de un objeto que serán también Objetos. Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range Programación Orientada a Objetos o Programación Basada en Objetos. Hay una sutil diferencia entre las definiciones del título. Programación orientada a Objetos, significa que el programador trabaja con objetos fabricados por él mismo, es decir, el programador es quien implementa las clases para luego crear objetos a partir de ellas. Lo que haremos nosotros, por el momento, será utilizar objetos ya definidos por la aplicación Excel (WorkSheets, Range,...) sin implementar ninguno de nuevo, por lo que en nuestro caso es más correcto hablar de programación basada en objetos. Observe que esta es una de las grandes ventajas de la POO, utilizar objetos definidos por alguien sin tener que conocer nada sobre su implementación, sólo debemos conocer sus propiedades y métodos y utilizarlos de forma correcta. Bueno, después de esta extensa pero necesaria introducción pasemos ya a hacer alguna cosa en Excel. No es necesario que se aprenda lo anterior al pié de la letra y tampoco es necesario que lo comprenda al cien por cien, sólo téngalo presente para las definiciones que vienen a continuación y verá como va asimilando los conceptos de Objeto, propiedades, métodos, etc. El editor de Visual Basic es la aplicación que utilizaremos para construir las
  • 8. 8 macros que interactuaran junto con los libros de trabajo. A continuación prepararemos un archivo en el que escribiremos las primeras instrucciones en Visual Basic. Preparar un archivo nuevo Para entrar en el editor de Visual Basic, ejecute los pasos siguientes. 1. Active opción Botón de Office/ Opciones de Excel/ Mostrar ficha Programador. 2. Se mostrará la Ficha Programador en la Cinta de Opciones.
  • 9. 9 3. Maximice la ventana para trabajar más cómodamente y procure tener activadas la ventana Explorador de proyectos y la Ventana Propiedades (Ver/ Explorador de proyectos y Ver/ Ventana propiedades). Insertar módulo.
  • 10. 10 INSERTAR UN NUEVO MÓDULO. Un módulo sirve para agrupar procedimientos y funciones. El procedimiento y la función son entidades de programación que sirven para agrupar instrucciones de código que realizan una acción concreta. Para insertar un módulo active opción del menú Insertar/ Módulo. Se activará una nueva ventana, si aparece demasiado pequeña, maximícela. Ya hemos dicho que un procedimiento es un bloque de instrucciones de código que sirven para llevar a cabo alguna tarea específica. Un procedimiento empieza siempre con la instrucción Sub Nombre_Procedimiento() Y termina con la instrucción End Sub A continuación crearemos un procedimiento para poner el texto "Hola" en la celda A1.
  • 11. 11 Ejemplo 1 Sub Primero() Range ("A1").Value = "Hola" End Sub Observe el código. Range("A1").Value="Hola" En esta línea estamos indicando que trabajamos con un objeto Range. Para indicarle que nos referimos a la celda A1, encerramos entre paréntesis esta referencia (más adelante verá otra forma de referirnos a las celdas). De este objeto, indicamos que queremos establecer un nuevo valor para la propiedad Value, observe que para separar el objeto de su propiedad utilizamos la notación punto. Recuerde que el conjunto Range es un objeto que pende del objeto WorkSheets, así por ejemplo el siguiente código haría lo mismo que el anterior. WorkSheets(1).Range ("A1").Value = "Hola" Bueno, de hecho no hace lo mismo, en la primera opción, el texto "Hola" se pone dentro de la celda A1 de la hoja activa, mientras que en el segundo es en la celda A1 de primera hoja (del conjunto de hojas). La segunda notación es más larga, pero también más recomendable ya que se especifican todos los objetos. En muchas ocasiones se pueden omitir algunos objetos precedentes, no le aconsejamos hacerlo, sus programas perderán claridad y concisión. Si desea hacer referencia a la hoja activa puede utilizar ActiveSheet, así, el primer ejemplo lo dejaremos de la manera siguiente. Sub Primero() ActiveSheet.Range("A1").Value = "Hola" End Sub Ejecutar un procedimiento o función. Pruebe ejecutar el primer procedimiento de ejemplo. 1. Sitúe el cursor dentro del procedimiento. 2. Active opción de la barra de menús Ejecutar/ Ejecutar Sub Userform. También puede hacer clic sobre el botón o pulsar la tecla F5.
  • 12. 12 Para ejecutar el procedimiento desde la hoja de cálculo. Debe estar en una hoja, no en el editor de Visual Basic 1. Active opción de la barra de menús Herramientas/ Macro/ Macros. Se despliega una ventana que muestra una lista donde estás todas las macros incluidas en el libro de trabajo. 2. Seleccione la macro de la lista y pulse sobre el botón Ejecutar. En este segundo ejemplo simplemente ampliaremos la funcionalidad de la macro del ejemplo1. Además de escribir "Hola" en la celda A1 de la celda A1, la pondremos en negrita y le daremos color al texto. Para ello utilizaremos las propiedades Bold y Color del objeto Font. Sub Segundo() ActiveSheet.Range("A1").Value = "Hola" ActiveSheet.Range("A1").Font.Bold = True ActiveSheet.Range("A1").Font.Color = RGB(255,0,0) End Sub True. True, que traducido es verdadero, simplemente indica que la propiedad Bold está activada. Si se deseara desactivar, bastaría con igualarla al valor False. La función RGB. Observe que para establecer el color de la propiedad se utiliza la función RGB (Red, Green, Blue), los tres argumentos para esta función son valores del 0 a 255 que corresponden a la intensidad de los colores Rojo, Verde y Azul respectivamente. Referenciar un rango de celdas. Sólo tiene que cambiar a la forma Celda_Inicial:Celda_Final. Por ejemplo aplicar el último ejemplo al rango de celdas que va de la A1 a la A8, ponga. Sub Segundo() ActiveSheet.Range("A1:A8").Value = "Hola" ActiveSheet.Range("A1:A8").Font.Bold = True ActiveSheet.Range("A1:A8").Font.Color = RGB(255,0,0) End Sub
  • 13. 13 A continuación vamos a repetir el programa Ejemplo1, pero en lugar de poner "Hola" en la celda A1 de la hoja activa, dejaremos que el usuario entre un texto desde teclado y a continuación guardaremos ese valor en esa celda. Observe que el valor que ingresó el usuario debe guardarse en algún lugar para poder ponerlo después en la celda A1; pues bien, ese valor se guardará en una variable. Una variable es simplemente un trozo de memoria que la función o procedimiento se reserva para guardar datos, la forma general de declarar una variable es Dim Nom_var As Tipo. Siendo variable el nombre que se asigna a la misma y Tipo el tipo de datos que se guardarán (números, texto, fecha, booleanos,...). En nuestro ejemplo, declararemos la variable de tipo String (tipo texto), y lo haremos de la forma siguiente. Dim Texto As String Con esto estamos indicando que se reserve un trozo de memoria (el que sea), que se llama Texto y que el tipo de datos que se guardarán ahí serán caracteres. FUNCIÓN InputBox. Esta función muestra una ventana para que el usuario pueda teclear datos. Cuando se pulsa sobre Aceptar, los datos entrados pasan a la variable a la que se ha igualado la función. Vea la línea siguiente. Texto = InputBox("Introduzca el texto", "Entrada de datos"). Si en la ventana que muestra InputBox pulsa sobre el botón Aceptar, los datos tecleados se guardarán el la variable Texto. Sintaxis de InputBox. InputBox(Mensaje, Título, Valor por defecto, Posición horizontal, Posición Vertical, Archivo ayuda, Número de contexto para la ayuda). Mensaje : Es el mensaje que se muestra en la ventana. Si desea poner más de una línea ponga Chr(13) para cada nueva línea, vea el ejemplo siguiente. Título : Es el título para la ventana InputBox. Es un parámetro opcional. Valor por defecto: Es el valor que mostrará por defecto el cuadro donde el usuario entra el valor.
  • 14. 14 PARÁMETRO OPCIONAL. Posición Horizontal: La posición X de la pantalla donde se mostrará el cuadro, concretamente es la posición para la parte izquierda. Si se omite el cuadro se presenta horizontalmente centrado a la pantalla. Posición Vertical: La posición Y de la pantalla donde se mostrará el cuadro, concretamente es la posición para la parte superior. Si se omite el cuadro se presenta verticalmente centrado a la pantalla. Archivo Ayuda: Es el archivo que contiene la ayuda para el cuadro. Parámetro opcional. Número de contexto para la ayuda: Número asignado que corresponde al identificador del archivo de ayuda, sirve para localizar el texto que se debe mostrar. Si se especifica este parámetro, debe especificarse obligatoriamente el parámetro Archivo Ayuda. Sub Entrar_Valor() Dim Texto As String ' Chr(13) sirve para que el mensaje se muestre en dos Líneas Texto = InputBox("Introducir un texto " & Chr(13) & "Para la celda A1", "Entrada de datos") ActiveSheet.Range("A1").Value = Texto End Sub Este ejemplo también se puede hacer sin variables. Sub Entrar_Valor() ActiveSheet.Range("A1").Value = InputBox("Introducir un texto " & Chr(13) & "Para la celda A1", "Entrada de datos") End Sub Ejemplo 4 Repetiremos el ejemplo 3, pero en lugar de entrar los valores sobre la celda A1, haremos que el usuario pueda elegir en que celda quiere entrar los datos, es decir, se le preguntará al usuario mediante un segundo Inputbox sobre que celda quiere entrar el valor del primer Inputbox. Serán necesarias dos variables, una para guardar la celda que escoja el usuario y otra para guardar el valor.
  • 15. 15 Option Explicit Sub Entrar_Valor() Dim Celda As String Dim Texto As String Celda = InputBox("En que celda quiere entrar el valor", "Entrar Celda") Texto = InputBox("Introducir un texto " & Chr(13) & "Para la celda " & Celda , "Entrada de datos") ActiveSheet.Range(Celda).Value = Texto End Sub En visual basic no es necesario declarar las variables, por ejemplo, en el programa anterior se hubiera podido prescindir de las líneas Dim Celda As String Dim Texto As String A pesar de ello, le recomendamos que siempre declare las variables que va a utilizar, de esta forma sabrá cuales utiliza el procedimiento y que tipo de datos guarda cada una, piense que a medida que vaya aprendiendo, creará procedimientos cada vez más complicados y que requerirán el uso de más variables, si no declara las variables al principio del procedimiento ocurrirán dos cosas: Primero, las variables no declaradas son asumidas como tipo Variant (este es un tipo de datos que puede almacenar cualquier valor, número, fechas, texto, etc. pero tenga en cuenta que ocupa 20 Bytes y para guardar una referencia a una casilla, la edad de alguien, etc. no son necesarios tantos bytes). Segundo, reducirá considerablemente la legibilidad de sus procedimientos ya que las variables las irá colocando a medida que las necesite, esto, a la larga complicará la corrección o modificación del procedimiento. Bueno, pues toda la explicación anterior es para que declare todas las variables que va a utilizar. La sentencia Option Explicit al principio del módulo fuerza a que se declaren todas las variables. Si al ejecutar el programa, se encuentra alguna variable sin declarar se producirá un error y no se podrá ejecutar el programa hasta que se declare.
  • 16. 16 Conversión de Tipos de datos. Copie el siguiente Ejemplo. Simplemente se piden dos números, se suman y se guardan en la celda A1 de la hoja activa. Ejemplo 5 Option Explicit Sub Sumar() Dim Numero1 As Integer Dim Numero2 As Integer Numero1 = InputBox("Entrar el primer valor", "Entrada de datos") Numero2 = InputBox("Entrar el primer valor", "Entrada de datos") ActiveSheet.Range("A1").Value = Numero1 + Numero2 End Sub Ahora, vuelva a ejecutar el programa y cuando se le pide el primer valor teclee "Hola". Observe que el programa se detiene indicando un error en el tipo de datos. Efectivamente, observe que la función InputBox devuelve siempre datos tipo String, en el primer ejemplo no ha habido ningún problema, al entrar caracteres numéricos, estos pueden asignarse a variables tipo Integer porque Visual Basic hace automáticamente la conversión, pero al entrar texto e intentarlo asignar a una variable Integer Visual Basic muestra un error indicando que la variable no es adecuada para los datos que se desean guardar. Para solucionar estos problemas se deben utilizar funciones de conversión de tipo. Estas funciones, como su nombre indica, convierten datos de un tipo a otro, de String a Integer, de Integer a String, de Date a String,... Así el procedimiento anterior quedaría. Option Explicit Sub Sumar() Dim Numero1 As Integer Dim Numero2 As Integer Numero1 = Val(InputBox("Entrar el primer valor", "Entrada de datos")) Numero2 = Val(InputBox("Entrar el primer valor", "Entrada de datos")) ActiveSheet.Range("A1").Value = Numero1 + Numero2 End Sub La función Val (Dato String), convierte una cadena de caracteres a valor numérico. Si la cadena a convertir contiene algún carácter no numérico devuelve 0. Así, si al pedir un valor se teclea "Hola", la función Val, devolverá un cero.
  • 17. 17 TIPOS DE DATOS TIPO: Determina la naturaleza del dominio de valores que puede tomar una variable, las operaciones en que puede participar y el espacio de memoria que necesita. CLASIFICACIÓN: TIPOS DE DATOS TIPOS TIPO TIPOS TIPO TIPO ESTRUCTURADOS PROCEDIMIENTO PUNTERO SIMPLES CADENA ORDINALES ENTEROS ARRAYS BOOLEAN SET CHAR RECORD ENUMERADO FILE SUBRANGO NO ORDINALES REALES TIPOS ENTEROS: TIPO RANGO MEMORIA Integer -32768 a 32767 2 Bytes Long -2”147‟483,648 a 2”147‟483,647 4 Bytes TIPOS REALES: TIPO RANGO MEMORIA Single 3.4E-45 a 3.4E+38 4 Bytes Double 1.7E-308 a 1.7E+308 8 Bytes TIPO CADENA: TIPO RANGO MEMORIA String „a‟..‟z‟, „A‟..‟Z‟, „0‟..‟9‟,‟+‟.‟-„,‟*‟,‟/‟,etc. 1 Byte
  • 18. 18 EXPRESIONES Y OPERADORES 1.- EXPRESIÓN: Es un conjunto de operandos mas operadores. EXPRESIÓN = OPERANDOS + OPERADORES Variables *,+,-,/,div,mod,etc. Constantes EJM: a) 5 * 4 b) ( X + 6 ) / 8 c) 80 div 5 d) not ( X > Y ) e) ( X < 80 ) and ( X > 40 ) 2.- OPERADORES: Se utiliza para formar expresiones. TIPOS: A) OPERADORES MATEMÁTICOS: OPERADOR OPERACIÓN TIPO DE TIPO DE OPERANDO RESULTADO + Suma E ó R E ó R - Resta E ó R E ó R * Multiplicación E ó R E ó R / División Real E E División Entera E E Mod Residuo E E B) OPERADORES BOOLEANOS(LÓGICOS): OPERADOR OPERACIÓN TIPO DE TIPO DE OPERANDO RESULTADO Not Negación Lógica bool bool And And Lógica bool bool Or Or Lógica bool bool C) OPERADORES RELACIONES(CONDICIONALES): OPERADOR OPERACIÓN TIPO DE TIPO DE OPERANDOS RESULTADO = Igual Tipos Compatibles boolean <> No igual Tipos Compatibles boolean < Menor que Tipos Compatibles boolean > Mayor que Tipos Compatibles boolean <= Menor o igual que Tipos Compatibles boolean >= Mayor o igual que Tipos Compatibles boolean
  • 19. 19 ESTRUCTURAS BÁSICAS A) ESTRUCTURAS SECUENCIALES Constan esencialmente de sucesivos pasos, uno detrás de otro. Sintaxis: <Instrucciones 1> <Instrucciones 2> <Instrucciones 3> . . . <Instrucciones n> B) ESTRUCTURAS DE CONTROL CONDICIONAL Las estructuras condicionales son instrucciones de programación que permiten controlar la ejecución de un fragmento de código en función de si se cumple o no una condición. Estructuras de Decisión Estructura If ... Then Esta estructura evalúa una condición específica y, si es verdadera, ejecuta todas las instrucciones que le siguen a la palabra clave Then. Sintaxis: If <condición> Then <Instrucción> End If
  • 20. 20 Estructura If ... Then ... Else Permite evaluar una condición, si la condición es verdadera ejecuta las instrucciones debajo del If sino ejecuta las instrucciones debajo de la cláusula Else. Sintaxis: If <condición> Then <Instrucciones 1>, ejecuta si condición es verdadera Else <Instrucciones 2>, ejecuta si condición es falsa End If Estructuras If ... Anidadas Dentro de una estructura If puede ir otra, y dentro de esta otra y otra. Sintaxis: If <condición 1> Then <Instrucciones 1>, si condición 1 es verdadera Else If <condición 2> Then <Instrucciones 2>, si condición 2 es verdadera Else If <condición 3> Then <Instrucciones 3>, si condición 3 es verdadera ........................ ........................ Else If <condición n> Then <Instrucciones n>, si condición n es verdadera Else <Instrucciones m>, si ninguna de las condiciones anteriores es verdadera End If End If End If . . .
  • 21. 21 Estructura Select Case Es una estructura que evalúa una determinada expresión que puede tener múltiples alternativas de las cuales se podrá realizar una de ellas, en el caso que sea verdadera sino se evaluaran las instrucciones de la parte falsa debajo de la cláusula Case Else. Sintaxis: Select Case <Expresion> Case valor 1 {Sí valor 1 es verdad} <Instrucciones 1> Case valor 2 {Sí valor 2 es verdad} <Instrucciones 2> Case valor 3 {Sí valor 3 es verdad} <Instrucciones 3> . . . Case valor n <Instrucciones n> {Sí valor N es verdad} Case Else <Instrucciones m> {Sino son verdaderos los valores anteriores} End Select
  • 22. 22 C) ESTRUCTURAS DE BUCLES O REPETITIVAS ELEMENTOS AUXILIARES CONTADOR: Es una variable de tipo entero que permite controlar el número de repeticiones que puede dar un conjunto de instrucciones. Los contadores se pueden inicializar con un valor de 0 ó 1, pero no necesariamente. Sintaxis: Variable = Variable + valor Ejm: Cuáles de las siguientes expresiones, según la sintaxis es verdadera o falsa. 1) x=x+1 ( ) 2) y=y+4 ( ) 3) m=m+p ( ) 4) z=z–5 ( ) 5) a=b+8 ( ) ACUMULADOR: Es una variable recipiente que permite guardar un conjunto de valores que pueden ser: entero, real o cadena. Sintaxis: Variable = Variable + variable1 Ejm: Cuáles de las siguientes expresiones, según la sintaxis es verdadera o falsa. 1) x=x+y ( ) 2) p=p+q ( ) 3) m = m +3 ( ) 4) t= t+v ( ) 5) a=b+c ( )
  • 23. 23 ESTRUCTURAS REPETITIVAS Son empleadas en procesos repetitivos basados en rangos o condiciones. Estructuras Do While – Loop o Do Until – Loop.- Permiten ejecutar un conjunto de instrucciones mientras que una condición sea verdadera. Sintaxis: Do While | Until <condición> <Instrucciones>, se ejecutan mientras condición sea verdadera Loop Estructuras Do – Loop While o Do – Loop Until.- Permiten ejecutar un conjunto de instrucciones hasta que una condición sea verdadera o mientras la condición sea falsa. Sintaxis: Do < Instrucciones>, se ejecutan mientras condición es falsa Loop While | Until <condición> Estructura While – Wend.- Permite repetir un conjunto de instrucciones mientras una condición sea verdadera. Sintaxis: While <condición> <Instrucciones> „Instrucciones a repetir mientras condición sea verdadera Wend Sentencia For – Next.- Permite repetir un conjunto de instrucciones desde un valor inicial hasta un valor final. Sintaxis: For var = Valor Inicial To var Final [Step incremento] <Instrucciones> „Instrucciones a repetir Next [Contador]