miércoles, 7 de septiembre de 2016

Temario







Macros y Visual Basic para aplicaciones

Descripción​: El desarrollo de macros en excel, es una herramienta poco implementada por su desconocimiento, pero ideal para el manejo de tareas repetitivas y la creación de herramientas personalizadas de excel. Automatiza con las macros aquellas tareas que desarrolla diariamente y deje que excel con un clic haga por usted aquellas tareas u operaciones rutinarias. La capacitación puede ser dictada en Excel 2003, 2007 o 2010.

Dirigido a​: Usuario habituales y permanentes de Excel que quieran aprender a automatizar tareas y cálculos, automatización de informes, desarrollo de funciones personalizadas, recolección de datos y desarrollo de pequeñas aplicaciones

Prerrequisitos​: Manejo y conocimientos de nivel medio en Excel, Manejo básico de Windows.

Contenido

● Grabar macros

● Sintaxis básica macro

● Creación de parámetros

● Información desde celda, Inputbox, cuadros de texto

● Códigos condicionales de Visual Basic

● Repaso general

● Ejercicio particular cada alumno según su necesidad

Ejercicio de Diagnostico

Para acceder descarguelo AQUÍ

Tutorial de Visual Basic

Para Acceder presionar AQUI

Introducción de Macros

¿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 centrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para que ejecute los tres procesos automáticamente.

Objetos, propiedades y métodos.
A la hora de trabajar con macros en excel, deben tenerse claros ciertos conceptos de lo que se llama
programación orientada a objetos (OOP). No nos extenderemos demasiado sobre la OOP, pero si definiremos a continuación los conceptos de Objeto, Propiedades y Métodos.

Objeto.
Cuando en el mundo real nos referimos a objeto significa que hablamos de algo más o menos abstracto que puede ser cualquier cosa. Si decidimos concretar un poco más podemos referirnos a objetos coche, objetos silla, objetos casa, etc. En OOP, la generalización (o definición) de un objeto se llama Clase, así la clase coche seria como la representante de todos los coches del mundo, mientras que un objeto coche seria un coche en concreto. De momento, no definiremos ni estudiaremos las clases sino que nos concentraremos en los objetos, tenga en cuenta pero que cualquier objeto está definido por una clase.
Cuando decimos que la clase coche representa a todos los coches del mundo significa que define como es un coche, cualquier coche. Dicho de otra forma y para aproximarnos a la definición informática, la clase coche define algo que tiene cuatro ruedas, un motor, un chasis,... entonces, cualquier objeto real de cuatro ruedas, un motor, un chasis,... es un objeto de la clase coche.

Propiedades.
Cualquier objeto tiene características o propiedades como por ejemplo el color, la forma, peso, medidas, etc. Estas propiedades se definen en la clase y luego se particularizan en cada objeto. Así, en la clase coche se podrían definir las propiedades Color, Ancho y Largo , luego al definir un objeto concreto como coche ya se particularizarían estas propiedades a, por ejemplo, Color = Rojo, Ancho = 2 metros y Largo = 3,5 metros.

Métodos.
La mayoría de objetos tienen comportamientos o realizan acciones, por ejemplo, una acción evidente de un objeto coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final.
Cualquier proceso que implica una acción o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda manifestarse en cualquiera de sus objetos. Así, en la clase coche se definirían en el método mover todos los procesos necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto de la clase coche simplemente tendría que invocar este método para trasladarse de un punto inicial a un punto final, cualesquiera que fueran esos puntos.
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 casilla o rango de casillas).
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,...

Conjuntos.
Una 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 OOP, 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.

Editor de Visual Basic.
El editor de visual básic es la aplicación que utilizaremos para construir las 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 Herramientas/ Macro/ Editor de Visual Básic. Se abrirá la ventana siguiente. 


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

Insertar un procedimiento.
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
   
            SubNombre_Procedimiento

Y termina con la instrucción

           End Sub.

A continuación crearemos un procedimiento para poner el texto "Hola" en la casilla A1.

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 casilla A1, encerramos entre paréntesis esta referencia (más adelante verá otra forma de referirnos a las casillas). 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 casilla A1 de la hoja activa, mientras que en el segundo es en la casilla 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


Si desea poner "Hola" (o cualquier valor) en la casilla activa, puede utilizar la propiedad (objeto) Activecell de WorkSheets. Así para poner "Hola" en la casilla activa de la hoja activa seria,


                     Sub Primero
                            ActiveSheet.ActiveCell.Value = "Hola"
                     End Sub

Para terminar con este primer ejemplo. WorkSheets están dentro del Objeto WorkBooks (libros de trabajo) y WorkBooks están dentro de Application. Application es el objeto superior, es el que representa la aplicación Excel. Así, el primer ejemplo, siguiendo toda la jerarquía de objetos quedaría de la forma siguiente.

                      Sub Primero
                              Application.WorkBooks(1).WorkSheets(1).Range("A1").Value = "Hola"
                      End Sub

Insistiendo con la nomenclatura, Application casi nunca es necesario especificarlo, piense que todos los objetos penden de este, WorkBooks será necesario implementarlo si en las macros se trabaja con diferentes libros de trabajo (diferentes archivos), a partir de WorkSheets, es aconsejable incluirlo en el código, sobre todo si se quiere trabajar con diferentes hojas, verá, sin embargo, que en muchas ocasiones no se aplica

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.

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.


Ejemplo 2
En este segundo ejemplo simplemente ampliaremos la funcionalidad de la macro del ejemplo 1. Además de escribir "Hola" en la casilla 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 Casilla_Inicial:Casilla_Final. Por ejemplo aplicar el último ejemplo al rango de casillas 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


Variables.
A continuación vamos a repetir el programa Ejemplo1, pero en lugar de poner "Hola" en la casilla A1 de la hoja activa, dejaremos que el usuario entre un texto desde teclado y a continuación guardaremos ese valor en esa casilla. Observe que el valor que entre del usuario debe guardarse en algún lugar para poder ponerlo después en la casilla A1; pues bien, ese valor se guardará en una variable. Una variable es simplemente un trozo de memoria que la función o procedimineto se reserva para guardar datos, la forma general de declarar una variable es


DIM variable 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, boleanos,...). 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.

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


Instrucciones en VBA para Excel


Algunos de las instrucciones o comandos en Visual Basic para Excel más utilizados en programación de VBA son los que veremos a continuación:

Activar una hoja en Visual Basic para Excel: para ir a una hoja de cálculo de Excel utilizaremos el siguiente comando en VBA Shetts (“Hoja”).Select

Convertir texto en un número en Excel: si queremos convertir el texto a un valor numércio usaremos la función val(TextoAConvertirNumero)

Abrir un formulario en Excel con VBA: para abrir un formulario usaremos la siguiente instrucción NombredelFormulario.show

Mostrar un mensaje con Visual Basic: si queremos mostrar un mensaje al usuario usaremos el comando MsgBox “mensaje entre comillas”

Escribir en una celda de Excel: para escribir en una celda de Excel realizaremos la instrucción Activecell, el nombre de la fórmula y el texto que deseamos insertar en la celda.

Poner negrita en Visual Basic para Excel: la negrita se podrá utilizar en Visual Basic gracias al comando Selection.FontBold=True

Letra cursiva en Excel con VB: la cursiva la utilizaremos con la instrucción Selection.Font.Underline=True

Alinear el texto a la izquierda y derecha: para alinear el texto a la izquierda emplearemos los siguientes comandos, siendo necesario cambiar el xlLeft por xlRight si queremos alinear el texto a la derecha:

With Selection

.HorizontalAlignment=xlLeft

End With

Visual Basic

Visual Basic para aplicaciones es una combinación de un entorno de programación integrado denominado Editor de Visual Basic y del lenguaje de programación Visual Basic, permitiendo diseñar y desarrollar con facilidad programas en Visual Basic. El término “para aplicaciones” hace referencia al hecho de que el lenguaje de programación y las herramientas de desarrollo están integrados con las aplicaciones del Microsoft Office (en este caso, el Microsoft Excel), de forma que se puedan desarrollar nuevas funcionalidades y soluciones a medida, con el uso de estas aplicaciones.

El Editor de Visual Basic contiene todas las herramientas de programación necesarias para escribir código en Visual Basic y crear soluciones personalizadas.

Este Editor, es una ventana independiente de Microsoft Excel, pero tiene el mismo aspecto que cualquier otra ventana de una aplicación Microsoft Office, y funciona igual para todas estas aplicaciones. Cuando se cierre la aplicación, consecuentemente también se cerrará la ventana del Editor de Visual Basic asociada.

Creación de un “botón” que al apretarlo escriba HOLA

Vamos a crear un botón, que al hacer clic sobre él, muestre en la celda A1 la expresión “HOLA”.


Para ello, en primer lugar, se instalará en el documento de Microsoft Excel, el menú Programador (Menú Archivo -> Opciones -> Personalizar cinta de opciones y se selecciona la casilla Programador).


Una vez hecho esto, aparecerá la pestaña Desarrollador desde la que se pueden añadir los botones dentro de la pestaña.

En él se tomará el icono que representa a un botón, desplegándose en la Hoja1, por ejemplo, del documento Excel. De los dos botones que hay (tanto en formularios como en ActiveX), se seleccionará el de Controles de ActiveX, ya que de este modo se podrá cambiar el color y otras opciones del propio botón.


Una vez hecho esto, se pulsará dos veces sobre dicho botón para acceder así al Editor de Visual Basic, con el que se realizará el pequeño programa requerido, tal y como sigue:




Acumulación de “HOLA”’s en la misma celda.


Ahora vamos a cambiar el programa anterior, cambiando una de las líneas de programa, para hacer que cada vez que se haga un clic en el botón, se acumule un nuevo “HOLA” (igual que podría ser cualquier otro valor numérico o cadena de caracteres) al anterior. De esta forma, se identificará el contenido de la primera celda como un contador, acumulándose, en cada clic sobre el botón, una nueva cadena de texto en dicha celda contador.





Acumulación de texto en varias diagonales sucesivas

Continuando el ejemplo anterior, vamos a definir una lista en varias diagonales, en las que se mostrará el texto previamente definido (“BIENVENIDO”). En la nueva versión del programa anterior, se podrá observar cómo utilizar la función “condición” (representada por la función if) y el bucle (mediante la aplicación de la función for, entre otras opciones).
Así, para hacer que la palabra “BIENVENIDO” aparezca colocada siguiendo varias diagonales un número determinado de veces. Se definen, inicialmente, dos variables contador como enteros (función Dim… As Integer), y que representan además los índices de las celdas de la Hoja de Cálculo (filas y columnas). Se define el texto en la primera celda. Seguidamente, se define la condición de que la suma de los índices de celda (variables contadores) sean números pares, con la utilización de la función mod (función resto, dividiendo el número requerido por dos, si el resto es 0, el número es par), así se tendrían definidas las diferentes diagonales. Esta “condición” estaría colocada dentro de un doble bucle for (bucle anidado), en el que el valor de cada nueva celda de la diagonal, tendrá el mismo valor que la anterior.




Acumulación de texto en varias diagonales sucesivas

Continuando el ejemplo anterior, vamos a definir una lista en varias diagonales, en las que se mostrará el texto previamente definido (“BIENVENIDO”). En la nueva versión del programa anterior, se podrá observar cómo utilizar la función “condición” (representada por la función if) y el bucle (mediante la aplicación de la función for, entre otras opciones).
Así, para hacer que la palabra “BIENVENIDO” aparezca colocada siguiendo varias diagonales un número determinado de veces. Se definen, inicialmente, dos variables contador como enteros
(función Dim… As Integer), y que representan además los índices de las celdas de la Hoja de Cálculo (filas y columnas). Se define el texto en la primera celda. Seguidamente, se define la condición de que la suma de los índices de celda (variables contadores) sean números pares, con la utilización de la función mod (función resto, dividiendo el número requerido por dos, si el resto es 0, el número es par), así se tendrían definidas las diferentes diagonales. Esta “condición” estaría colocada dentro de un doble bucle for (bucle anidado), en el que el valor de cada nueva celda de la diagonal, tendrá el mismo valor que la anterior.





martes, 6 de septiembre de 2016

Ejemplos de Select case en VBA

La estructura Select en VBA es importante porque nos permite tener un control de las instrucciones agrupándolas, la sintaxis a emplear es como sigue:
Select [ Case ] expresión a evaluar
[ Case lista de expresiones
[Instrucciones a ejecutar] ]
[ Case Else
[ Instrucciones a ejecutar en el caso del else] ]
End Select
Primero tenemos la expresión a evaluar, en esta de debe evaluarse un dato el cual puede encontrarse dentro de la lista de expresiones.
Así podríamos encontrar mostrar el siguiente ejemplo de Select Case en VBA
Sub EjemploSelectCase()
Dim numero As Integer
numero = 8
Select Case numero
Case 1 To 5
     MsgBox “El número esta entre 1 y 5 “
Case 6, 7, 8
     MsgBox “El número esta entre 6, 7 y 8 “
Case 9 To 10
     MsgBox “El número esta entre 9 y 10 “
Case Else
     MsgBox “El número no esta entre 1 y 10 “
End Select
End Sub
Dependiendo del valor de la variable “numero” se ejecutará el bloque correspondiente


La función Select Case nos permite poder escoger de entre más de dos alternativas o instrucciones, a diferencia de la función If. A continuación se les invita a revisar 5 ejemplos en donde se puede aplica esta función:


Por ejemplo se plantea un caso en el que se desea determinar para el procesamiento de  una encuesta en particular el nivel socio económico al que pertenece una persona de acuerdo con su ingreso mensual. Para esto se creo una macro con la instrucción descrita anteriormente, SELECT CASE, en la que se establecen NSE A,  B+, B-, C+, C- y D. La macro empieza ejecutarse al hacer click en el botón que aparece en la hoja1 como muestra la siguiente imagen.  

Luego de hacer click aparece lo siguiente






lunes, 5 de septiembre de 2016

Colores

Para poder asignar un color a una celda o auna fuente, tenemos la propiedad ColorIndex, la cual podrá recibir colores del 1 al 56.

Si queremos darle un color rojo a la celda activa usamos:
ActiveCell.Interior.ColorIndex = 3
Si queremos darle un color azul al fuente de la celda activa usamos:
ActiveCell.Font.ColorIndex = 5
Aunque también podemos utilizar la propiedad Color de la siguiente manera.
ActiveCell.Interior.Color = vbRed
Para la propiedad Color tenemos 8 constantes de color a utilizar sin necesidad de saber el índice del color.








domingo, 4 de septiembre de 2016

Ciclo FOR NEXT

¿Qué es FOR NEXT en VBA?

El For Next en VBA  es una instrucción de uso muy frecuente, el propósito del For Next en VBA es realizar la repetición de un conjunto de instrucciones un determinado número de veces, veamos a continuación como emplear esta instrucción.

Sintáxis de FOR NEXT en VBA

FOR (variable inicializada) to límite  [Step avance ]
Instrucciones a ser repetidas
Next
La “variable inicializada” es el punto de partida de una variable, por ejemplo si ahí colocamos x = 2, entonces X comenzará almacenando el valor de 2 y se incrementará hasta alcanzar el valor que indique “límite“, el cierre del for se produce con la instrucción Next.
El uso de “Step” es opcional (por ello aparece entre corchetes), y permite determinar como va avanzando el valor de X hasta llegar al “límite“, si no se coloca esta parte se asume que se va incrementando de uno en uno, el valor de “Step” también puede ser negativo.

¿Cómo usar FOR NEXT en VBA?

Por ejemplo si empleamos lo siguiente:
FOR x =2 to 10
MSGBOX x
Next
Tendríamos que las instrucciones a ser repetidas se ejecutarían 9 veces, durante la primera ejecución x valdría 1, en la siguiente ejecución x valdría 2 y así sucesivamente hasta alcanzar el valor de 10.
Y si por ejemplo realizamos lo siguiente
FOR x =2 to 10 step 2 
MSGBOX x
Next
Lo que ocurriría es que X comenzaría valiendo 2, luego 4, luego 6 y así sucesivamente hasta alcanzar el valor de 10.



EJERCICIO SENCILLO





sábado, 3 de septiembre de 2016

Declaración de variables en VBA para Excel

Es conveniente leer el artículo ¿Qué es una variable en VBA para Excel? antes de abordar el actual, especialmente si el lector no conoce qué es una variable.

Una vez que nos decidimos a utilizar una variable en nuestro código VBA de Excel, aunque no es obligatorio, lo ortodoxo es declararla previamente. Esto es, decirle a Excel de forma explícita que la vamos a utilizar.

¿Cómo declarar una variable?

La forma por medio de la cual se declara una variable depende de varios factores. Uno de ellos es dónde la vamos a utilizar posteriormente (sólo en la macro actual o en otras macros). De momento nos vamos a referir a variables que se utilizan en una misma macro. Es decir, su vida y su ámbito de actuación es lo que tarda una macro en ejecutarse.

Una declaración de variable sería:

Dim Ventas As Double

Que significa:

Establecer Ventas como VariableTipoNúmeroDecimalDoble

Una vez declarada, la variable se puede utilizar asignándole previamente un valor, como en esta macro:

Sub Variable()

    Dim Ventas As Double

    Ventas = Hoja2.Range("A1").Value

    MsgBox ("Las ventas mensuales han sido " & Ventas * 0.03)
    Range("A2") = Ventas * 0.03
    MsgBox ("El promedio de ventas diarias ha sido de " & Ventas / 20)
    Range("A3") = Ventas / 20


End Sub

¿Qué tipos de datos puede representar una variable?


En el ejemplo anterior, era Double (tipo decimal que puede albergar valores con deimales desde +/- 5E-324 hasta 1.8E308 y nos ocupará 8 bytes en la memoria de nuestro ordenador) , pero por supuesto, existen otros que ocupan más o menos memoria y que tienen distintas características y posibilidades. Podemos ver un resumen en la web msdn de Microsoft.

¿Cómo declarar varias variables?

Podemos utilizar tres métodos:
El "extendido" sería declarar cada una de las variables en una línea. Por ejemplo:
          Dim J As Variant
          Dim H as Long
          Dim N as Integer
 El "comprimido" sería declarar todas las variables a la vez en una línea de código:
          Dim J As Variant, H As Long, N As Integer
Con "signos", que sería sustituir "As XXXX" por un signo. Por ejemplo:
          Dim MiVariable$   (declara MiVariable como una variable de tipo String (texto) 






viernes, 2 de septiembre de 2016

Uso de For each … Next en vba Excel

El constructor For each … Next nos permite la manipulación de objetos dentro de una colección. Una colección es el conjunto de elementos de un mismo tipo, por ejemplo, colección de celdas, de hojas, de libros, de ventanas, objetos gráficos, etc.
A diferencia del constructor For … Next, que nos permite elegir el inicio y fin de una numeración, la cual se puede asignar para varios motivos, For  each … Next incluye todos los objetos de las colecciones de Office.
Expongo 3 macros sencillas que nos permitirán conocer el uso del constructor, lo demás será cuestión de aplicar los métodos o procedimientos de cada objeto en cuestión.
Colección de celdas
Aplicable en la manipulación de celda contenidas en un rango elegido, por ejemplo: cambiar color, tamaño, insertar comentario, aplicar una función, etc. El siguiente ejemplo nos arroja un objeto MsgBox donde nos dice la ruta de cada celda elegidas, así como su contenido: