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