Introducción a VBA (Visual Basic for Applications)

Microsoft VBA (Visual Basic for Applications) es el lenguaje de macros de Microsoft Visual Basic que se utiliza para programar aplicaciones Windows y que se incluye en varias aplicaciones Microsoft. VBA permite a usuarios y programadores ampliar la funcionalidad de programas de Microsoft Office. Visual Basic para Aplicaciones es un subconjunto casi completo de Visual Basic 5.0 y 6.0.

Microsoft VBA viene integrado en aplicaciones de Microsoft Office, como Word, Excel y Access, Powerpoint. Prácticamente cualquier cosa que se pueda programar en Visual Basic 5.0 o 6.0 se puede hacer también dentro de un documento de Office, con la sola limitación que el producto final no se puede compilar separadamente del documento, hoja o base de datos en que fue creado; es decir, se convierte en una macro (o más bien súper macro). Esta macro puede instalarse o distribuirse con sólo copiar el documento, presentación o base de datos. (Definición tomada de Wikipedia)

¿Que puede hacerse con VBA?

Prácticamente todo… y más rápido, de hecho a medida que las utilices iras encontrando muchas aplicaciones para VBA, pero por ahora te daré algunas ideas:

  1. Insertar textos: En caso de que existan textos que ingreses repetidamente como el nombre de la empresa, números telefónicos, direcciones, etc.
  2. Automatizar tareas que hagas frecuentemente:.
  3. Desarrollar funciones propias (funciones como SUM, AVG, etc, claro pero que realicen otras tareas)
  4. Crear aplicaciones con formularios, botones y todo eso.
  5. Realizar cálculos complejos.
  6. Validar datos.

Seguridad en las macros.

Recuerdan que dijimos que VBA podría realizar prácticamente cualquier cosa que Visual Basic 5.0 ó 6.0, bueno es tan poderoso que también podría causar serios daños a tu computadora, como borrar archivos, robar información, incluso arruinar por completo tu sistema operativo. Es por eso que la seguridad de macros en Excel juega un papel importante para prevenir estos problemas.

Una instalación típica de Excel tiene todas las macros des habilitadas con notificación, esto significa que no se ejecutara ninguna macro que no este firmada con un certificado digital válido, a menos que des tu autorización, esta autorización es recordada por Excel y no volverá a solicitarla para el mismo documento (Esto aplica solo para la versión 2010, la 2007 volverá a solicitar la confirmación cada vez que se abra.)

Es recomendable que dejes esta opción de seguridad como esta y des tu autorización solo a documentos que provienen de una fuente confiable para ti.

Tu primer programa en VBA (¡Hola mundo!)

En el libro “El Lenguaje de Programación C”, Kernighan y Ritchie introdujeron al lenguaje C utilizando un sencillo programa que mostraba un saludo por la pantalla que decía “¡Hola mundo!”. Desde entonces se hizo tradición empezar con cualquier lenguaje de programación con el ejemplo del “Hola mundo” y nosotros vamos a honrar esta tradición.

Primero debes activar la cinta “Programador”, si no sabes como hacerlo puedes leer este artículo, luego selecciona la cinta programador y das clic sobre el botón “Visual Basic”.

Al hacer esto se abrirá un editor de código, como el que se muestra a continuación:

Ahora damos doble clic sobre “ThisWorkbook” y luego en la ventana derecha (sección de código) escribimos nuestro programa:

Sub Mensaje()
MsgBox (“¡Hola mundo!”)
End Sub

¡Listo!, ahora hemos creado nuestro primer programa en VBA, para probarlo podemos presionar la tecla F5 o presionar el botón “Ejecutar” (Triangulo verde en la barra de herramientas), también podemos ejecutarlo desde el documento de Excel con el botón “Macros”.

Explicación del programa.

La sección del código “Sub …. End sub” indica el inicio y fin de una sub rutina, en este caso nuestro programa, la palabra “Mensaje” es el nombre de nuestro programa, este nombre debe cumplir con estos requisitos:

  1. Contener solo letras, números y guion bajo ( _ ), los espacios no son permitidos.
  2. Comenzar con una letra
  3. Finalizar con paréntesis abiertos y cerrados.

El comando “MsgBox”, muestra un mensaje en pantalla, el texto a mostrar debe estar encerrado entre paréntesis y comillas dobles.


Quizá te interesen estos otros articulos:

  • EDMUNDO

    hola, espero me puedas ayudar. quiero crear un funcion en donde capture una letra y me de un numero por ejemplo capturar C y en resultado me de 19, G y el resultado sea 4. gracias por tus ateniones. saludos.

    • lcruz

      Hola, si ya sabes como capturar la letra y ya la tienes puedes usar un codigo como este:

      Dim LResult As Integer
      LResult = Asc (“W”)

      Donde la variable Lresult tendra el valor numerico ascii, que para este ejemplo seria 87, pero si quieres retornar numeros ya predefinidos, puedes usar una sentencia, como esta

      Dim LResult As Integer
      Select Case miLetra
      Case “C”
      LResult = 19
      Case “G”
      LResult = 4
      End Select

  • Muy bueno el artículo.
    Me interesaría avanzar con VBA (Excel y Access) en aplicaciones para un estudio Contable/ Impositivo.
    Tienen sugerencias para hacerme ?
    Gracias.

    • lcruz

      Con Excel y VBA puedes crear aplicaciones muy avanzadas. Te doy algunos pros y contras de Excel y Access.

      Excel Pros:
      1. Ingresar datos es muy facil
      2. Puedes lograr muchas cosas sin programar (usando solo formulas)
      Contras:
      1. Es dificil validar y proteger los datos que se ingresan
      2. Tiene mal desempeño a la hora de procesar volumenes grandes de información (para eso necesitas bases de datos)

      Access Pros:
      1. Crear una aplicacion es mas facil que hacerlo en un lenguaje de programacion como .Net
      2. Puedes manejar volumenes grandes de información
      Contras:
      1. Ingresar informacion no es tan facil como se hace en Excel
      2. Crear el sistema puede ser mas dificil que hacerlo en Excel

      Si no tienes muchos conocimientos y deseas ahorrarte tiempo y hacer algo de alta calidad, es mejor que leas un libro sobre VBA. Si ya tienes conocimientos sobre VBA, puedes leer blogs y hacer consultas en foros.

  • Santos

    copie y luego F5 y sale “error de compilación” y “error de sintaxis”

    • lcruz

      A veces al copiar texto de una pagina web las comillas dobles ” se cambian por unas comillas dobles inclinadas, después de pegar el texto en el editor de VBA de Excel, verifica las comillas dobles, y por si acaso borralas y vuelve a escribirlas. Creo que con eso se corrige.

  • Paola

    buena tarde disculpe podrian ayudarme a como crear un diseño de mi hoja de excel y de que manera puedo mostrar datos de una tabla con un menu desplegable y tambien como poder introducir en una celda cualquier numero y este me muestre datos de una tabla que esten en el rango del numero que le introduje a la celda, espero puedan ayudarme. buena tarde.