Lars tuvo un problema al usar la función ATAN2 en una macro. Desarrolló un conjunto de instrucciones bastante complicado, solo para que VBA generara un error cuando intentaba usar la función ATAN2. Pudo simplificar la macro para poder recrear el problema:

Sub Test()

Dim A As Double

Dim C As Double     Dim E As Double

A = 5908     C = 0     C = -C     E = 180 / WorksheetFunction.Pi

MsgBox E * WorksheetFunction.Atan2(C, A)

End Sub

Cuando se ejecuta el código, se genera el error en la línea donde se ejecuta ATAN2. Lars se preguntaba qué causaba exactamente el problema.

El problema aparentemente está relacionado con cómo está manipulando la variable C. Primero define C como cero y luego niega este valor. No existe el cero negativo, y cuando intenta negar el valor, Excel aparentemente se resiste cuando ese valor se usa posteriormente en la fórmula.

Una forma de resolver el problema es simplemente cambiar la forma en que C se transforma para dar cuenta de los valores cero. Cambie la macro para que se vea así:

Sub Test()

Dim A As Double

Dim C As Double     Dim E As Double

A = 5908     C = 0     If C <> 0 Then C = -C     E = 180 / WorksheetFunction.Pi

MsgBox E * WorksheetFunction.Atan2(C, A)

End Sub

Ahora la macro funcionará bien porque solo está haciendo la transformación en C si no es igual a cero.

También parece que el error solo se genera si C se define como un valor de punto flotante. Si dimensiona C como un número entero, la macro original no genera un error. Esto podría indicar que el problema está relacionado con cómo se representa internamente una representación en coma flotante del cero negativo inexistente. Dado que el tipo de datos Integer trata estrictamente con números enteros, ese problema de representación no ocurre.

También puede deshacerse del problema si declara C como un tipo de datos Variant, o si elimina la línea de declaración por completo (lo que significa que VBA declara por defecto C como Variant cuando se usa por primera vez).

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2892) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.