Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Macros y lenguaje VBA
  3. Procedimientos, funciones y macros
Extrait - Macros y lenguaje VBA Descubra la programación en Excel (nueva edición)
Extractos del libro
Macros y lenguaje VBA Descubra la programación en Excel (nueva edición) Volver a la página de compra del libro

Procedimientos, funciones y macros

Objetivos del capítulo

Antes de seguir avanzando en este libro, es necesario tener un vocabulario básico para entender el contenido de los siguientes capítulos. Este capítulo pretende ayudarle a orientarse y a comprender fácilmente las cuestiones que se tratan.

En la programación VBA, podrá utilizar varias palabras para definir los programas que usted escribirá. Sin orden de preferencia, verá, las palabras «procedimiento», «función» y «macro» relacionadas con los nombres de sus programas. También leerá acerca de la noción de ámbito y, por último, se abordarán los parámetros, datos que se proporcionan como entrada a sus programas.

Procedimientos, funciones y macros

Los programas que usted creará pasarán por dos tipos de bloques de instrucciones: procedimientos o funciones. El nombre «macro» es el que ha entrado en el vocabulario de los desarrolladores. Descubrirá lo que se esconde detrás de esta palabra.

Procedimientos

Los procedimientos que ha visto en los capítulos anteriores son bloques de instrucciones que se pueden ejecutar; por ejemplo, cuando se colorea una celda de amarillo. Los procedimientos no devuelven ningún valor, a diferencia de las funciones. Esta sección le mostrará cómo declararlos y utilizarlos.

Declarar un procedimiento

De la misma forma que para una variable, un procedimiento se debe declarar antes de poder utilizarlo. Se definen con la palabra clave Sub y se terminan con la instrucción End Sub.

Entre estas dos líneas, usted codificará las instrucciones que se ejecutarán cuando el procedimiento sea llamado desde alguna otra parte del programa.

La sintaxis para declarar un procedimiento es la siguiente:

[Private o Public] Sub NombreDeProcedimiento([param_1 As 
TipoDeParametro],...) 
   Instrucciones 
End Sub 

El nombre del procedimiento debe respetar la nomenclatura de nombres (ver el capítulo Variables y constantes), y ser lo más explícito posible para facilitar su uso, como en el siguiente ejemplo.

Public Sub AgregarEdadEnA1(iEdad...

Public o Private, todo es cuestión de ámbito

Antes de los términos Sub y Function, puede ver las palabras clave Public o Private. El uso de la palabra clave le permite definir el ámbito del programa en toda su aplicación.

En las siguientes secciones, en un esfuerzo de legibilidad, se utilizará el término «variable», pero la información es la misma para las constantes. De igual manera, se utilizará el término «procedimiento», pero la información correspondiente también es válida para las funciones.

Noción de ámbito

Cuando se declaran y utilizan variables en un programa, se plantea la cuestión de la accesibilidad de estas variables en todo el programa. Dependiendo de cómo defina sus variables, puede que solo sean accesibles desde ciertos puntos de su programa.

Ámbito de las variables

Para las variables que utilice, existen tres posibles niveles de acceso en VBA:

  • A nivel de procedimiento: cuando las variables se declaran en el interior de un procedimiento, solo pueden ser utilizadas por las instrucciones dentro de él. Las variables no existen «fuera» de los procedimientos en los que se declaran. La palabra clave de definición es Dim, pero también puede utilizar Static.

Sub MacroEjemplo() 
   Dim bOK As Boolean 
End Sub 

Ejemplo 6: declarar una variable con ámbito...

Parámetros

Cuando se declara un procedimiento o función, puede requerir información que le será útil (por ejemplo, para calcular la edad de una persona, se necesita su fecha de nacimiento). Esta información se denomina, pues, parámetros. Esta sección le ofrece la información necesaria para entenderlos y dominarlos.

Sintaxis general

Los parámetros aparecen al declarar un procedimiento o función (no una macro, que, por definición, no tiene parámetros).

La sintaxis general de los parámetros es la siguiente:

Sub EjemploDeProcedimiento ([ByRef o ByVal] NombreDeParametro1 As  
TipoDeParametro1, NombreDeParametro2 As TipoDeParametro2) 
   Instrucciones 
End Sub 

Ejemplo 11: declarar un procedimiento y sus parámetros

Los parámetros se declaran dentro de los paréntesis que siguen al nombre del procedimiento o función. En caso de que se necesite más de un parámetro, se separan con una coma.

El nombre de los parámetros sigue la misma nomenclatura que el de las variables. Pueden ir precedidos de las palabras clave ByRef o ByVal, mencionadas en la siguiente sección.

Cuando el parámetro se declara de la siguiente forma en un procedimiento:

Sub EjemploDeProcedimiento (ByVal NombreDeParametro As TipoDeParametro) 
   Instrucciones 
End Sub 

Ejemplo 12: declarar parámetros obligatorios

es obligatorio que el programa que llama a la función o procedimiento proporcione un valor para este parámetro. Es imposible determinar la edad exacta de una persona sin su fecha de nacimiento.

Diferencias entre ByRef o ByVal

Cuando se proporcionan parámetros al procedimiento, tiene la opción de permitir que el procedimiento modifique la propia variable o simplemente proporcionarle su valor.

Pasar por referencia: ByRef

Al utilizar la palabra clave ByRef, la función o procedimiento al que se pasa el parámetro recibe «realmente» la variable y, si esta se modifica dentro de la función o el procedimiento al que se llama...

Ejercicios

Escribir macros

Macro privada

 Escriba la macro Capitulo07_Ejercicio1A de ámbito privado.

Esta macro mostrará al usuario el valor 42.

 Ejecute la macro Capitulo07_Ejercicio1A (42).

Macro pública

 Escriba la macro Capitulo07_Ejercicio1B de ámbito público.

Esta macro llamará a la macro Capitulo07_Ejercicio1A creada precedentemente.

 Ejecute la macro Capitulo07_Ejercicio1B (42).

Escribir procedimientos

Procedimiento de visualización

 Escriba el procedimiento Visualizar, de ámbito público, que tome como parámetro un valor numérico entero largo llamado Valor.

Este procedimiento mostrará el doble del valor que se le pasa como parámetro.

 Cree la macro Capitulo07_Ejercicio2A, que ejecutará el procedimiento Visualizar, pasándole el valor 10.

 Ejecute la macro Capitulo07_Ejercicio2A(20).

Compartir variables públicas

 Cree una variable de tipo Fecha llamada FechaCompartida, de ámbito público.

 Esta declaración de variable se colocará en la parte superior del módulo.

 Escriba el procedimiento llamado ProcedimientoFechaInicio, de ámbito público, que tome como parámetro una fecha llamada FechaInicio.

Este procedimiento actualizará la variable FechaCompartida asignándole un valor de FechaInicio + 1 día.

 Escriba otro procedimiento...