Curso Excel VBA y Macros – Cap. 26 – Procedimientos Sub públicos, privados y cómo ejecutarlos
En este tutorial veremos a fondo el tema de Procedimientos Sub, los cuales generalmente pueden ser considerados como macros. Veremos la manera de cómo declarar macros y algunas maneras de ejecutarlas.
Veremos también que podemos tener procedimientos Públicos y privados, y la diferencia entre ellos.
Ver video Capítulo 26 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Qué es un Procedimiento en VBA
-
Un procedimiento es una serie de instrucciones que se encuentran en un Módulo.
-
Un Módulo puede contener varios procedimientos.
-
Un archivo puede contener varios módulos.
-
Regularmente un procedimiento comienza con Sub.
-
Existen varias maneras de llamar o ejecutar procedimientos.
Consideraciones sobre procedimientos
-
Aunque un procedimiento o macro puede contener muchas instrucciones, lo recomendable es tener procedimientos relativamente cortos con su acción bien definida.
-
Un buen desarrollador define bien qué hace cada procedimiento y eso le facilita el mantenimiento del código.
Existen:
-
Procedimientos Sub
-
Funciones (functions)
Sintaxis
La manera habitual de declarar macros o procedimientos es usando la instrucción Sub, pero a continuación vemos que no es la única manera.
[ Private | Public ] [ Static ] Sub nombre [ ( arglist ) ]
[ instrucciones ]
[ Exit Sub ]
[ instrucciones ]
End Sub
Donde:
ELEMENTO |
DESCRIPCIÓN |
Private |
Indica que el procedimiento es privado |
Public |
Indica que el procedimiento es público |
Static |
Indica que el procedimiento es estático |
Sub |
Palabra reservada para declarar procedimientos o macros |
Nombre |
El nombre que debe llevar el procedimiento |
Arglist |
Cada uno de los argumentos que se le pasarán al procediemiento, en caso que aplique. |
Instrucciones |
Cada una de las instrucciones que se ejecutarán |
Exit Sub |
Salir de la macro en caso de que se cumpla una condición |
End Sub |
Cierre del procedimiento |
Procedimientos Privados
Cuando definimos un procedimiento privado, estamos dando la instrucción de que la macro o el procedimiento sólo puede ser llamado desde una macro del mismo módulo y que no podremos visualizarla desde el cuadro de diálogo de macros.
Una macro privada la definimos así:
Private Sub NombreMacro2()
Dim nombre As String
nombre = “Curso Macros”
MsgBox nombre
End Sub
Procedimientos Públicos
De manera predeterminada, un procedimiento es público, pero podemos usar la palabra reservada Public para dejarlo en claro, aunque no es necesario usarla. Cuando hablamos de macros públicas estamos diciendo que pueden ser llamada desde cualquier procedimiento de cualquier módulo, además de poder ejecutarla desde el cuadro de diálogo de macros.
Public Sub NombreMacro()
Dim nombre As String
nombre = “Curso Macros”
MsgBox nombre
End Sub
Procedimientos Estáticos
Usando la palabra reservada Static indicamos que los valores de las variables se conservarán, incluso después de terminar la macro. Esto es similar a cuando vimos las Variables estáticas.
Static Sub NombreMacro3()
Dim numero As Integer
MsgBox numero
numero = numero + 1
End Sub
Option Private Module
Al inicio de un Módulo podemos usar esta instrucción para forzar a que las macros sean privadas. Usando esta instrucción, las macros sí se pueden llamar desde otras macros, pero no podrán ser vistas en el Cuadro de diálogos de macros.
Llamar o ejecutar macros desde otras macros
Siempre y cuando las macros que mandemos llamar sean públicas, existen estas maneras de ejecutar procedimientos desde otros procedimientos.
-
Call NombreMacro. Usando la intrucción Call.
-
Application.Run NombreMacro. Usando el método Run, además podemos incluir los argumentos que tenga el procedimiento.
-
Módulo1.NombreMacro3. Anteponiendo el nombre del módulo y luego el nombre de la macro.
Procedimientos con argumentos
Así como en las funciones de Excel, también le podremos pasar argumentos a un procedimiento. Este tema lo veremos posteriormente.
Salir de la macro con Exit Sub
Usamos Exit Sub cuando deseamos validar alguna condición, y si esa condición se cumple salimos de la macro sin pasar por el resto de las instrucciones. Uso mucho esta instrucción cuando muestro un mensaje con los botones Si / No. En caso de que se presione No, salimos de la macro.
Cuadro de diálogo Macros
Si nos vamos a la pestaña Vista > Macros > Ver macros, podemos ver las macros que están disponibles en nuestro archivo. En este cuadro de diálogo solo se mostrarán las macros que sea públicas, no así las privadas.
Además, en el cuadro de diálogo de Macros, no podremos visualizar las siguientes macros:
-
Procedimientos de Función.
-
Procedimientos donde usando la instrucción Private.
-
Procedimientos que tengan argumentos.
-
Procedimientos almacenados en un addin, como EXCELeINFO.
-
Procedimientos que sean lanzados por eventos.
Descarga el archivo de ejemplo
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.