Access

Una función nz () para todas las aplicaciones

Me sorprendió saber que la función NZ () con la que nosotros, el acceso a los desarrolladores, cuentamos simplemente no existen en otras aplicaciones VBA (Excel, Outlook, …).

Dado que incorporo cheques nulos en algunos de mis procedimientos, y para permitirles trabajar fuera de Microsoft Access, pensé que era importante demostrar lo fácil que es crear nuestra propia función definida por el usuario para tales casos.

Entonces, aquí hay un ejemplo de una función NZ () personalizada que se puede implementar en cualquier aplicación VBA (fuera del acceso como no es necesario):

'---------------------------------------------------------------------------------------
' Procedure : Nz
' Author    : Daniel Pineault, CARDA Consultants Inc.
' Website   : 
' Purpose   : UDF Nz function for use outside of Access to replicate Access' built-in
'               Nz() function
'               Replaces NULL values with the specified value.
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
'             (CC BY-SA 4.0) - 
' Req'd Refs: None required
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' vValue        : Value to test for NULL
' vValueIfNull  : Replacement value should the value be found to be NULL
'
' Usage:
' ~~~~~~
' ? Nz("Something", True)
'   Returns -> something
'
' ? Nz(Null, True)
'   Returns -> True
'
' ? "'" & Nz(Null) & "'"
'   Returns -> ''
'
' ? Nz(Null, 0)
'   Returns -> 0
'
' Revision History:
' Rev       Date(yyyy-mm-dd)        Description
' **************************************************************************************
' 1         2005-07-13
' 2         2025-02-03              Added header
'                                   Updated Error Handling
'---------------------------------------------------------------------------------------
Function Nz(ByVal vValue As Variant, _
            Optional ByVal vValueIfNull As Variant = "") As Variant
    On Error GoTo Error_Handler

    If IsNull(vValue) Then ' Or IsEmpty(vValue) Then 'Could also apply to Empty values?!
        Nz = vValueIfNull
    Else
        Nz = vValue
    End If

Error_Handler_Exit:
    On Error Resume Next
    Exit Function

Error_Handler:
    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
           "Error Source: Nz" & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Description: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
           , vbOKOnly + vbCritical, "An Error has Occurred!"
    Resume Error_Handler_Exit
End Function

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba