La función definida por el usuario Excel VBA Office 365 Mac (Versión 16.86 (24051422)) en macOS Ventura 13.6.7 genera resultados diferentes si se utiliza una función "IIf" en lugar de una declaración "If Then Else". Los ejemplos siguientes:
Function myMOD3(a As Double, b As Double) As Variant
` myMOD3 = IIf(b = 0, "NaN", a - b * (a \ b))
myMOD3 = IIf((b <> 0), (a - b * (a \ b)), ("NaN"))
End Function
Function myMOD4(a As Double, b As Double) As Variant
If b = 0 Then
myMOD4 = "NaN"
Else
myMOD4 = a - b * (a \ b)
End If
End Function
La primera función, myMOD3 funciona. Sin embargo, cuando "b" es igual a 0, genera un error de división por cero si se llama desde un Sub en VBA o "#VALUE!" cuando se llama desde Excel. Por alguna razón, la función "IIf" no captura b=0 o b<>0 (el código comentado tiene el mismo resultado) lo que resulta en la devolución de "NaN".
La segunda función, myMOD4, también funciona bien. Cuando b=0, responde correctamente devolviendo "NaN". Ambas funciones deberían producir resultados idénticos.
¿Es solo una extraña característica de MS VBA? En otras situaciones, la función IIf parece funcionar como se espera. ¿Alguien tiene alguna idea?