La mayoría de los lectores ya saben que puede crear funciones y subrutinas usando VBA. Esto no es diferente de lo que es bajo el nombre de VBA, Visual Basic. Normalmente, una macro aparece en la lista de macros cuando muestra el cuadro de diálogo Macros (presione Alt + F8), a menos que se cumpla una de estas tres condiciones:

  • La macro es una función. Las funciones normalmente devuelven información y requieren que se les pase información. Dado que ejecutar una macro desde la lista de macros no permite que suceda ninguna de estas cosas, Excel calcula que no es necesario enumerarla. Las funciones definidas por el usuario, que son bastante útiles en Excel, no se muestran en el cuadro de diálogo Macros porque, después de todo, son funciones.

  • La macro es una subrutina con parámetros. Excel asume que, dado que los parámetros son necesarios y no puede proporcionar parámetros eligiendo la subrutina de la lista de macros, no es necesario enumerarla.

  • La subrutina ha sido declarada Privada. Esto significa que la subrutina solo es útil para codificar dentro del módulo en el que está declarada.

El único tipo de macro que aparece en el cuadro de diálogo Macros es una subrutina no privada sin parámetros. Sin embargo, en determinadas situaciones, es posible que tampoco desee los incluidos en la lista. Por ejemplo, es posible que haya creado algunas subrutinas universales que no hacen nada útil si se llaman por sí mismas; están diseñados para ser llamados desde otro código. Por ejemplo, considere la siguiente macro:

Sub MySub()

MsgBox "We are running the macro"

End Sub

Esta macro aparecerá en el cuadro de diálogo Macros. Si no desea que aparezca, hay varias soluciones que puede buscar, todas las cuales se vuelven obvias al examinar las tres formas en que las macros se excluyen de la lista de macros. La primera solución potencial es examinar su código y averiguar si es realmente «universal». ¿Necesita el código de más de un módulo? Si no lo hace, declare la subrutina Privada; no aparecerá en el cuadro de diálogo Macros. Por tanto, la macro de problemas anterior se convierte en la siguiente:

Private Sub MySub()

MsgBox "We are running the macro"

End Sub

La segunda forma de ocultar la macro es simplemente convertirla en una función.

Esto puede sonar extraño, especialmente si no desea devolver ningún valor, pero está perfectamente permitido. En VBA, una función no tiene que devolver un valor. En ausencia de declarar explícitamente un valor de retorno, la función devolverá un resultado predeterminado (por ejemplo, Boolean devuelve False, String devuelve «», etc.) Por lo tanto, el procedimiento del problema podría cambiarse a una función y declararse como se muestra aquí:

Function MySub() As Boolean     MsgBox "We are running the macro"

End Function

Este procedimiento no se muestra en el cuadro de diálogo Macros y no requiere argumentos. Devuelve False de forma predeterminada, pero este resultado se puede ignorar. Dependiendo de la naturaleza de la subrutina que está cambiando, puede ser beneficioso para usted realmente permitir que la función convertida devuelva Verdadero o Falso dependiendo del éxito de lo que se está haciendo en el código. En este caso, la función convertida es una función real y no una subrutina ficticia, ya que devuelve algo de valor.

La tercera solución potencial es utilizar algunos parámetros ficticios con la subrutina. No necesita hacer nada con ellos dentro de la subrutina en sí, pero al incluirlos, el procedimiento no aparece en la lista de macros. En este escenario, la subrutina del problema se cambia a algo como lo siguiente:

Sub MySub(Void As Integer)

MsgBox "We are running the macro"

End Sub

Ahora, el procedimiento no aparece en la lista de macros, pero debe cambiar la forma en que se llama a la subrutina. Debe modificar cada instancia para que se pase un parámetro, aunque nunca se utilice.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (3291) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:

enlace: / excelribbon-Hiding_Macros [Ocultar macros].