Curso Excel VBA y Macros – Cap. 32 – Funciones sin argumentos, con uno o dos
En este tutorial daremos continuidad al tema de Funciones VBA y Funciones personalizadas UDF o User-defined Functions, por sus siglas en inglés.
Veremos algunos ejemplos de funciones sin argumentos, con uno o dos. El ejemplo que contiene dos argumentos, uno de ellos será opcional. En caso de los argumentos opcionales, te mostraré cómo evaluar si el argumento se ingresa o no, usando la función VBA.IsMissing.
Ver video Capítulo 32 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Funciones VBA
Repasemos algunos temas con respecto a las funciones.
-
Una función es un procedimiento que captará argumentos y devolverá un valor o una matriz de valores.
-
Las funciones pueden llamarse desde procedimientos o desde celdas.
-
Existen funciones sin argumentos como HOY o AHORA.
-
Las funciones públicas son disponibles para todos los procedimientos del archivo y para usarse en celdas.
-
Las funciones privadas solo están disponibles en los procedimientos del mismo módulo.
Funciones personalizadas UDF (User Defined Function)
Una función personalizada, puede ser pública o privada. Si es pública la podemos invocar desde una celda en Excel, pero si es privada, solo podrá ser llamada desde procedimientos.
Estas funciones las podremos encontrar en el cuadro de diálogo Insertar función, en la categoría Definidas por el usuario y podremos tener una interfaz gráfica para insertar los argumentos.
Cuando ingresamos el sigo de igual “=” en una celda, vamos a poder visualizar las UDF, siempre y cuando el archivo o add-in que las contenga esté abierto. Excel tiene más de 450 funciones, más las que desarrolles.
Función sin argumentos
Te comparto 3 ejemplos de funciones UDF donde no requerimos argumentos para devolver un resultado. En la primera devolvemos el nombre de la hoja activa, en la siguiente la versión de Excel y en la última mostramos el usuario de Excel, el cual puedes encontrar en las Opciones de Excel.
Option Explicit Function NombreHoja() Application.Volatile NombreHoja = ActiveSheet.Name End Function Function Version() Application.Volatile Version = Application.Version End Function Function Usuario() Application.Volatile Usuario = Application.UserName End Function
Función con un argumentos
En esta función valor a tener como argumento el valor de Ventas y dependiendo la cantidad, vamos a devolver un descuento. Usaremos la sentencia If-Then-Else para evaluar las cantidades y MsgBox para mostrar un mensaje bien elaborado.
Option Explicit
Function Descuento(Ventas)
Application.Volatile
If Ventas < 10 Then
Descuento = 0
ElseIf Ventas < 20 Then
Descuento = 0.1
Else
Descuento = 0.2
End If
End Function
Sub CalcularDescuento()
Dim ValorVentas As Integer
Dim Mensaje As String
ValorVentas = InputBox("Ingrese las ventas", "Ventas")
If ValorVentas = 0 Then Exit Sub
Mensaje = "Las ventas son: " & vbTab & ValorVentas
Mensaje = Mensaje & vbNewLine & "El descuento es: "
Mensaje = Mensaje & vbTab & VBA.Format(Descuento(ValorVentas), "0%")
MsgBox Mensaje, vbInformation, "EXCELeINFO"
End Sub
Función con dos argumentos. Uno opcional
La siguiente función será válida solo para usarse en una celda de Excel. Lograremos que si el usuario ingresa el valor 1, el texto ingresado se convertirá a MAYÚSCULAS, si ingresamos el 2, a minúsculas, y si no se ingresa el parámetro Tipo, se devolverá el texto tal cual. El parámetro Tipo es opcional, por lo que evaluaremos con VBA.IsMissing si el parámetro se ingresa o no.
Option Explicit
Function CTexto(Texto As String, Optional Tipo As Variant)
If VBA.IsMissing(Tipo) Then
Tipo = 0
CTexto = Texto
Else
Select Case Tipo
Case 1
CTexto = VBA.UCase(Texto)
Case 2
CTexto = VBA.LCase(Texto)
Case Else
CTexto = VBA.CVErr(xlErrValue)
End Select
End If
End Function
Descarga el archivo de ejemplo
032 – Funciones sin argumentos, con uno o dos. Opcionales.zip
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.

