Recordemos que la programación de macros se hace a través del lenguaje de Visual Basic, denominada también como programación Orientada a objetos y que nos permite trabajar en Excel. Recalcar que cuando hablamos de macros estamos hablando de objetos, propiedades, y métodos, donde se utilizan variables y códigos.  En anteriores partes de esta serie de artículos ya vimos  que son los objetos, la propiedades y los métodos, en esta analizaremos las lineas de código que conforman una macro.

{jos_sb_discuss:6}

En la primera parte definiamos que es un objeto,  recordando que no es más que cualquier parte de excel con la que podamos interactuar una hoja, un rango, una celda, un libro, un gráfico, columnas, etiquetas de hojas, etc y lo asimilabamos este concepto al de una Casa,

Las propiedades no serían más que las características de la casa, o sea informatícamente hablando, por ejemplo las propiedades de una celda, sería ni mas ni menos, que su: color, vacía o con número, su alto y su ancho, etc…, por lo tanto las características de los objetos.

Los métodos, no son más que las acciones que podemos realizar sobre la casa, es decir, sobre los objetos, por ejemplo las acciones a realizar en un libro, en una hoja, o en una columna, serían activar, mover, copiar o borrar.

Las variables datos que se guardan en memoria (recordemos el ejemplo del armario reservado para guardar ropa y que podemos ir cambiando según temporada). Dijimos que se dividían en Públicas (Public), Privadas (Private), y también podemos encontrar las variables Estáticas (Static), La variables (Locales) y Variables (Constantes)

Antes de proseguir analizando las lineas de código debemos analizar cada una de las variables que podemos utilizar en Visual Basic, comencemos.

{mospagebreak title=Variables} 

DIVISIÓN DE VARIABLES.

Public (publicas) disponibles para todos los procedimientos en todos los módulos de todas las aplicaciones. Tenemos una excepcion, cuando utilicemos “Option Private Modulo “ en este caso, solo son publicas dentro de vonde viven.
 

Ejemplo:

Public NumeroDeDias As Integer

Privadas (private), disponibles para procedimientos de un mismo módulo disponible en todos los procedimientos del módulo, pero no para el código de otros módulos. A nivel de módulo no hay diferencia entre Private y Dim.

Ejemplo: 

Private NumeroDeDias As Integer
 

Variables Locales se declaran dentro de cada macro y solo se utilizán dentro de dicha macro en la que se han creado.

Ejemplo: 

Sub Macro1()

Dim Autor As String

Autor = "mmm" 

ActiveCell = Autor

End Sub
 

Variables Estáticas (Static) son las que conservan su valor mientras el código se está ejecutando, con esta forma de declarar variables conseguimos que las variables Locales no se creen y se destruyan al salir y entrar de los procedimientos donde se declararon y hacen que se mantenga su valor durante todo el periodo de ejecución de la aplicación, recordando así el valor que tenía cuando salió de él.
 

Static se utiliza mientras se ejecuta la aplicación

Dim se utiliza mientras se ejecuta el procedimiento.


Ejemplo:

Static x As Byte o Static x As Long
 

Variables Constantes (Const), esta instrucción se utiliza cuando queremos que una variable no cambie y que siempre haga referencia a un mismo valor, han de ser Públicas.

 

Ejemplo: 

Const Nombre As Byte = 23

Se ha definido una variable como Nombre as Byte y que su valor será siempre 23

{mospagebreak title=El Editor de Macros}

EL EDITOR DE MACROS

Antes de ver y analizar las lineas de código debemos ver y familiarizarnos con el editor de macros que se incorpora en Office en este caso veremos el editor de macros de excel




 

Pasos para ver el editor de Visual Basic en Excel:

1.- Abrimos el libro de Excel donde queremos escribir nuestras macros, los guardamos con el nombre que queramos, y le damos a Alt. + F11, o bien herramientas > Macros > Editor de Visual Basic.
2.- Una vez dentro nos aparece las ventanas y barras de herramientas que se utilizan en Visual Basic. (Expuestas arriba)
3.- Para poder ver el explorador de proyectos, vamos al menú “Ver”> “explorador de proyectos>
4.-Para poder ver la ventana propiedades, vamos a menú Ver> Ventana de propiedades.
5.- Para poder ver la ventana Código, vamos a menú Ver > Código
6.- Para poder ver la Ventana Inmediato, vamos a menú Ver > Ventana Inmediato

 

    1. 2.  3.

Vamos a dar un repaso a las principales ventanas que utilizaremos en Visual Basic:

Ventana Proyecto

  • El botón arriba señalado con el número 1 se denomina “Ver código” y si le damos clic, nos muestra la “ventana Código”. 
  • El botón arriba señalado con el número 2 se denomina “Ver objeto” y si le damos clic, nos lleva a la hoja 1 de Excel.
  • El botón arriba señalado con el número 3 se denomina “Alternar carpetas” y si le dais clic, veréis que cambia el orden de los elementos.

VBAProject (Mi libro.xls) = Carpeta principal

 


 

Dentro de la ventana Proyecto tenemos también los formularios “UserForms” y los Módulos.

La Ventana propiedades como se puede observar arriba nos indica las propiedades de todos los objetos, módulos y formularios que tenemos en la Ventana Proyecto, si hacemos clic en Sheet 1 (hoja 1), veremos que nos aparece las propiedades de dicha hoja, y así con los formularios y con los módulos.

La Ventana Código pues es donde vamos a escribir nuestras macros. 

La Ventana Inmediato, sirve para probar nuestras macros sin tener que escribir toda la macro, solamente nos sirve para si queremos preguntarnos algo sobre la macro o queremos probar alguna línea de código, esta ventana repito solo sirve como pruebas, una vez escrita la línea de código solo se ejecuta una vez al darle a ENTER.

{mospagebreak title=  Análisis de las líneas código de una macro}

 

ANALISIS DE LAS LINEAS DE CODIGO EN UNA MACRO

Esta parte la vamos a explicar con un sencillo ejemplo que es como mejor se  entenderá.


‘Esta macro escribe ¿Qué tal amigos? En la celda A1

 

Sub MiMacroUno()

Range(“A1”).Value = “¿Qué tal amigos?”

End Sub
 

Pues esta macro tiene cuatro líneas de código:

 

1ª Línea: El comentario que hacemos sobre la macro, siempre y digo siempre tiene que ir precedido del signo   , para que el Editor de macros   así lo reconozca como lo un comentario nuestro para facilitarnos nuestra tarea, el editor automáticamente nos lo pintará en verde, y se puede colocar en cualquier línea, no tiene efectos negativos sobre la macro al contrario nos servirá de ayuda.

2ª Línea: Sub MiMacroUno()

Aquí comienza la macro, Con Sub seguido del nombre que queráis ponerle a vuestra macro, (siempre sin espacios y todo junto), y los ().

3ª Línea


Con este código hacemos que la macro haga lo que nosotros le hemos pedido, recordad siempre que hay que hacer referencia al objeto y luego asignarle una propiedad o método.

4ª Línea: End Sub

Es el final de la macro y siempre terminan con esta instrucción.


EJEMPLO DE UNA MACRO

Hoy he querido poner esta macro muy original y que os gustara en cuanto al efecto que tiene en una hoja de Excel y que nos ayudará a familiarizarnos con el editor de macros, para probarla tenéis que hacer lo siguiente:


1.- Abrir un libro y lo guardáis con el nombre que queráis.

2.- Luego seleccionáis la Fila 12 y clic con el botón derecho de ratón y seleccionas “Alto de Fila”

3.- En Alto de fila le ponéis 100

4.- Luego os vais a la columna “C” y la seleccionáis y clic con el botón derecho de ratón y le dais a “Ancho de Columna” y le ponéis 90.

5.- Le dais a guardar

6.- Alt.+F11 y abrís el editor de visual Basic, os ponéis en la ventana de proyecto y le dais clic a

 Thisworkbook, para abrir su ventana de código y escribir allí (o copias y pegáis) esta macro.

7.- Una vez hecho esto, cerráis, le decís que SI a guardar el libro y al volver a abrir el libro, veréis la ejecución de esta macro.

 

Private Sub Workbook_Open()


Range("C12").Select
Selection.Font.Bold = True
With Selection.Font
.Name = "verdana"
.Size = 48
End With
ActiveCell.FormulaR1C1 = "¿Qué tal amigos?"
ActiveCell.Font.Color = RGB(0, 0, 0)
For a = 1 To 255 Step 25
For b = 1 To 255 Step 25
For c = 1 To 255 Step 15
ActiveCell.Font.Color = RGB(a, b, c)
Next c
Next b
Next a

Range("C12").Select 
Selection.ClearContents
With Selection.Font
.Name = "verdana"
.Size = 10
End With
End Sub



{mospagebreak title= Tipos de datos en VBA }

TIPOS DE DATOS EN VISUAL BASIC

En este apartado vamos a ver los tipos de datos que podemos utilizar en una variable en Visual Basic

  • Tipo de datos, como ya hemos dicho define el tipo de variables que podemos usar
  • Tamaño define cuanto espacio ocupa en memoria
  • Intervalo se definen los valores que puede adquirir la variable

Tipos de datos > Su tamaño > Intervalo:

Byte > 1 Byte > de 0 a 255 (útil para utilizar con datos binarios)

Boolean > 2 Bytes > True o False

 Integer > 2 Bytes > -32.768 a 32.767

 Long (entero largo) > 4 Bytes > -2.147.483.648 a 2.147.483.648

Single (coma flotante/precisión simple) > 4 bytes

Ø Para valores negativos -3,402823E38  a  -1,401298E-45

Ø Para valores positivos 1.401298E-45  a  3,402823E38

                                                                                                  
 Double (coma flotante/ precisión doble) > 8 bytes

Ø Para valores negativos -1,79769313486231E308 a -4,94065645841247E-324

Ø Para valores positivos 4,94065645841247E-324 a 1,79769313486231E308

Currency (entero a escala) > 8 bytes > - 922.337.203.685.477,5808 a 922.337.203.685.477,5807 

Decimal > 14 Bytes

Ø +/- 79.228.162.514.264.337.593.543.950.335

Ø +/- 7,9228162514264337593543950335 Con 28 posiciones al lado del signo decimal

Ø El número más pequeño distinto de cero es +/- 0,0000000000000000000000000001

 

Date > 8 bytes > del 1 de enero de 100 a 31 de diciembre de 9999

Object > 4 bytes > Cualquier referencia a tipo Object 

String (Longitud Variable) > 10 bytes + longitud de cadena > Desde 0 a 2.000 millones.

String (longitud Fija) > Longitud de cadena > Desde 1 a 65.400 aproxi.

Variant (con números) > 22 bytes + Longitud de cadena

  • Cualquier valor numérico hasta el intervalo de un tipo Double 

Variant (con Caracteres) > 22 bytes + longitud de cadena

  • El mismo intervalo que para un tipo String de longitud variable

Definido por el usuario (Utilizando Type) > Número requerido por los elementos

  • El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos 

Y hasta aquí la tercera parte, proximamente

EJEMPLOS DE MACROS PARA ENTENDER ESTOS TIPOS DE DATOS

ADEMAS DE AÑADIR LAS EXPRESIONES QUE SE UTILIZAN PARA CONVERTIR VARIABLES DE UN TIPO A OTRO.

A todos vosotros que estais ahi. Un saludo

Monica