Sin duda, todas las Funciones Definidas por el
Usuario (UDF) escritas mediante el lenguaje de programación VBA, son por
defecto No Volátiles; Esto quiere decir que la función sólo se recalcula cuando
alguno de sus argumentos cambia.
Por tanto, una función Volátil podría definirse
como aquella función que se recalcula cada vez que se produce una modificación
en cualquier celda de la hoja de un libro de Excel donde se haya empleado.
Para entenderlo mejor veamos un sencillo ejemplo
1. Abra Excel y luego ingrese al Editor de Visual
Basic para Aplicaciones (Alt + F11).
2. Haga clic en el menú Insertar para crear un
nuevo Módulo.
En el módulo recién insertado, creará una función
pública llamada NombreCompleto, la cual retornará en una sola celda el nombre
de una persona que inicialmente se encuentra en cuatro celdas independientes.
Public Function NombreCompleto(CeldaInicio As
Range) As String
Dim i As Integer
Dim Cadena As String
If CeldaInicio.Count > 1 Then
NombreCompleto = "Debe seleccionar una sola
celda."
Else
For i = 0 To 3
If CeldaInicio.Offset(0, i).Value <>
"" Then
Cadena = Cadena & CeldaInicio.Offset(0,
i).Value & " "
End If
Next i
NombreCompleto = Cadena
End If
End Function
3. Ahora puede utilizar esta función dentro de una
celda de cualquier hoja del libro de Excel como si se trátese de cualquier otra
función de la interfaz de usuario.
Nota: aprecie que esta función personalizada opera
casi del mismo modo que la función CONCATENAR de Excel. Sin embargo, la función
NombreCompleto sólo necesita un argumento para operar, el cual como puedes
apreciar es la celda que contiene el primer nombre.
Esta función toma el contenido de las tres celdas
siguientes ubicadas justo a la derecha de la celda que se pasa como argumento
de la función, para sumar su contenido y retornar una cadena completa separada
por espacios respectivamente.
Esto es lo que se conoce como una función
personalizada No Volátil. Es decir, la función sólo se recalcula si alguno de
su(s) argumento(s) cambia o se modifica.
Para comprender el concepto cambie el primer nombre
ubicado en la celda A2 por el nombre: Oscar y presione Intro.
Fíjese como la función se recalcula al modificar o
cambiar su único argumento.
4. Ahora cambie el primer apellido ubicado en la celda C2 por el apellido: Leal y presione Intro.
Nota: aprecie como la función NombreCompleto no se
recalcula.
Esto ocurre ya que todas las funciones definidas
por el usuario son No Volátiles por default. Es decir, si las celdas que se modifican
o cambian no hacen parte de los argumentos de la función, esta última nunca se
recalculará.
5. Actualice el código escrito dentro de la función
personalizada para convertirla en una función volátil y guarde los cambios. El
nuevo procedimiento quedará así:
Public Function NombreCompleto(CeldaInicio As
Range) As String
Dim i As Integer
Dim Cadena As String
Application.Volatile (True)
If CeldaInicio.Count > 1 Then
NombreCompleto = "Debe seleccionar una sola
celda."
Else
For i = 0 To 3
If CeldaInicio.Offset(0, i).Value <>
"" Then
Cadena = Cadena & CeldaInicio.Offset(0,
i).Value & " "
End If
Next i
NombreCompleto = Cadena
End If
End Function
6. Cierre y abra el libro de Excel donde creó la
UDF y cambie el segundo apellido ubicado en la celda D2 por el apellido: Novoa
y observe el resultado.
Nota: para evaluar la función NombreCompleto como
volátil dentro de la celda, usted debe refrescar la función dando clic dentro
de dicha celda y posteriormente presionar Intro; La modificación del código sólo
tiene efecto en las funciones que se escriben en nuevas celdas.
¡Adelante! Ya puede cambiar el contenido de
cualquier celda; sean estas las que estén involucradas directamente dentro de los
argumentos de la función o fuera de ellos; la función se actualizará con los
nuevos datos.
No hay comentarios.:
Publicar un comentario