SITIO DEDICADO  SOLO A EXCEL 2007 Y EXCEL 2003, CON TUTORIALES Y EJERCICIOS  RESUELTOS DE  TODOS LOS TEMAS

NIVELES, BASICO, MEDIO Y AVANZADO

PROGRAMACION VBA PARA EXCEL

 

INTRODUCCION:

Si bien la grabadora de macros es muy útil y genera un código siempre correcto, tiene dos desventajas:

 

  • genera mas código que el necesario.
  • sólo puede hacer macros con instrucciones secuenciales y sin nada de lógica, o sea que no pueden tomar desiciones ante un evento.

Ambas desventajas se pueden solucionar con la programación VBA que quiere decir programación visual basic para aplicaciones, lo lamento pero aquí no tenemos mas remedio que aprender a programar y eso es lo que van a ir aprendiendo con los tutorarles de este apartado.

VBA es una programación que está íntimamente relacionada con los libros y las hojas de cálculo y para esto Excel cuenta con un editor de programación donde se pone el código, a este se puede acceder, en Excel 2007, yendo a la pestaña programador y luego a la sección código donde hacemos clic en Visual Basic

En Excel 2003 hay que ir al menú desplegable herramientas y de ahí la ruta macros y Editor de Visual Basic

ambas formas nos lleva, luego de hacer doble clic en Hoja1por ejemplo, al editor

las macros que se escriban aquí, estaran relacionadas con la Hoja1.

Comencemos por lo mas simple y escribamos una macro que seleccione la celda B5de la Hoja1 del libro VBAProject (Libro2)

Primera macro

donde podemos ver que el código

Codigo1

se escribe entre "Sub" y "End Sub" y que el nombre

Nombre

no tiene espacios y termina con  "( )" . Para ejecutar este código pulsamos en el icono icono o en la tecla F5 para que aparezca el panel Macros

Panel Macro

donde puede verse el nombre de la macro que ya está seleccionada, luego pulsamos en "ejecutar" y despues en el icono icono2 , o seleccionando  " Alta + F5 que nos lleva a la pantalla con el resultado

selección de B5

que es la selección de la celda B5.

Otro código muy simple es escribir un valor en una celda.

Escribamos el valor 2007 en la elda D8

macro 2

y si lo queremos borrar

borrar

A estas alturas estamos en condiciones de explicar estos sencillos códigos:

En la programación VBA se trabaja con OBJETOS ( Hojas, celdas, Rangos, etc) que como todo objeto,  tiene propiedades,  por ejemplo el objeto celda pude tener la propiedad de alto, ancho, estar seleccionada, tener un valor, o no tener ninguno, etc

En los códigos que hemos escrito  tenemos los objetos Range("B5") ( celda B5) con la propiedad de estar seleccionada y  el objeto Range("D8") ( celda D8) con la propiedad de tener un número (2007) y despues  estar vacía.

CODIGOS MAS SIMPLES PARA EMPEZAR

1-Seleccionar una Celda

Range("A1").Select

2-Escribir en la celda que está seleccionada en el momento actual

Activecell.FormulaR1C1="Pedro"

la combinación  los códigos 1 y 2 es equivalente a esta sola línea:

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

El uso de   FormulaR1C1  sera explicado mas adelante

3-Letra Negrita

Selection.Font.Bold = True

4-Letra Cursiva

Selection.Font.Italic = True

5-Letra Subrayada

Selection.Font.Underline = xlUnderlineStyleSingle

6-Centrar Texto

With Selection

           .HorizontalAlignment = xlCenter

End With

7-Alinear a la izquierda

With Selection

              .HorizontalAlignment = xlLeft

End With

8-Alinear a la Derecha

With Selection

            .HorizontalAlignment = xlRight

End With

9-Tipo de Letra(Fuente)

With Selection

.Font .Name = "Arial"

End With

10-Tamaño de Letra(Tamaño de Fuente)

With Selection.Font .Size = 12

End With

11-Copiar

Selection.Copy

12-Pegar

ActiveSheet.Paste

13-Cortar

Selection.Cut

14-Ordenar Ascendente

Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

15-Orden Descendente

Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

16-Buscar

Cells.Find(What:="César", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate

17-Insertar Fila

Selection.EntireRow.Insert

18-Eliminar Fila

Selection.EntireRow.Delete

19-Insertar Columna

Selection.EntireColumn.Insert

20-Eliminar Columna

Selection.EntireColumn.Delete

21-Abrir un Libro

Workbooks.Open Filename:="C:\Mis documentos\Tablas dinamicas.xls"

22-Grabar un Libro

ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\tablas.xls", FileFormat _ :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False

La mayoria de estos códigos se pueden verificar con la grabadora de Macros.

 

Significado de la FORMULA R1C1

La FORMULA R1C1 se emplea para colocar el resultado de una línea de código en la celda que actualmente está activa.

Veamos el siguiente caso

 

seleccion actual

supongamos que queremos sumar los números de de la columna D y que el resultado aparezca en la celda F6 que es la que está seleccionada, el código que se debería escribir es el siguiente

 

FORMULAR1C1

El paréntesis destacado en rojo tiene por objetivo cubrir el tango donde están los números a sumar, o sea, desplazarme 2 columnas a la izquierda [-2] con 5 y 2 filas hacia arriba es decir

[-5] y [-2]. Se entiende que R significan filas y C columnas y que anteponemos un - si nos desplazamos hacia la izquierda o hacia arriba. Cuando escribimos una función, como en el caso anterior, siempre debe ser escrita ActiveCell.FormulaR1C1 = "=SUM(R[]C[]:R[]C[])", pues el segundo igual es que caracteriza a la función y el paréntesis el rango donde se aplica. Lo que se acaba de hacer es lo mismo que dolocar =SUMA(D1:D3) en la celda F6

Hasta ahora hemos hecho una breve intrcduccion a la programacion VBA , pero una cosa fundamental es entender las estructuras de control de flujo de programa, lo que haremos mediante ejemplos

Estructuras de iteracion

Frecuentemente algunas líneas de código de repiten muchas veces con el consiguiente aumento del tamaño del programa. Esto se solucionado mediante los llamados estructuras de iteración, también llamadas ciclos de repetición o bucles.

Estos son:

While - Wend

Do - While - Loop

Do - Until --Loop

For - Next

For-Each-in-Next

Estructuras de desicion:

.If - Then - Else

Select - Case

Tipos de datos, funciones y subrutinas:

Tipos de datos

Funciones

Funciones propias de VBA

Eventos

Metodos

Macros

Gráficos en VBA

 

 

Copyright © 2009. Diseño CésarDesign
Free Web Hosting

http://www.000webhost.com/