Macro no reconoce valores iguales

24/06/2012 - 15:29 por nash | Informe spam
¡ Hola !
Tengo un megaproblema
Hice una macro simple, que compara dos celdas y si son distintas da un mensaje
Si son iguales deja pasar y grava algo en otra celda.
Hasta ahì todo bien, probe la misma y resultava muy bien pero haciendo otras pruebas, hay algunos casos en los que no resulta
Por mas que los valores son iguales y los he comparado con formulas y todo, con la funciòn IGUAL, etc. siempre me sale igual, pero la macro me dice que son distintas.

He probado de todo, y no resulta nada, ayuda please.

Este es el codigo, no me permite subir archivos.

Sub SIGUIENTEBALANCE()
'
' SIGUIENTEBALANCE Macro
'

'
If Range("D9") = "" Then
MsgBox ("Llene la fecha.")
Else
If Range("totalactivo") = 0 Or Range("totalpasivo") = 0 Or Range("totalpatrimonio") = 0 Then
MsgBox ("El Total Activo, Total Pasivo y Total Patrimonio deben ser valores diferentes a cero.")
Else
If Range("totalactivo") <> Range("totalpasivoypatrimonio") Then
MsgBox ("El Total Activo debe ser igual al Total Pasivo más el Patrimonio.")
Else
Sheets("Tablas").Visible = True
Sheets("Tablas").Select
Range("I4").Select
ActiveCell.FormulaR1C1 = "SI"
Sheets("Tablas").Select
ActiveWindow.SelectedSheets.Visible = False
Application.Goto Reference:="inicioresultado3"
End If
End If
End If
 

Leer las respuestas

#1 Pedro F. Pardo
24/06/2012 - 21:53 | Informe spam
En muchas ocasiones las comparaciones con los valores de las celdas fallan por el formato.

El número 3 en formato de texto es distinto del número 3 en formato numérico y la comparación dará falso.

para saber en qué punto falla, puedes ejecutar la macro pulsando F8 e ir pulsando F8 cada vez para que la vaya ejecutando paso a paso. Si colocas el puntero del ratón encima del código, por ejemplo sobre Range("totalpatrimonio")
aparecerá el valor que tiene en ese momento.

Yo a veces también utilizo la ventana inmediato (en la parte de abajo) para escribir las comparaciones en mitad de la macro, mientras se está ejecutando.

Escribes por ejemplo:
?Range("totalactivo") <> Range("totalpasivoypatrimonio")

y al pulsar Enter te dirá Verdadero o Falso.
(Importante escribir la interrogación al principio)

Fíjate en cual es la comparación que falla y comprueba si el valor de esa celda es numérico o texto.

Saludos,
Pedro


El domingo, 24 de junio de 2012 14:27:26 UTC+1, nash escribió:
¡ Hola !
Tengo un megaproblema
Hice una macro simple, que compara dos celdas y si son distintas da un mensaje
Si son iguales deja pasar y grava algo en otra celda.
Hasta ahì todo bien, probe la misma y resultava muy bien pero haciendo
otras pruebas, hay algunos casos en los que no resulta
Por mas que los valores son iguales y los he comparado con formulas y todo, con
la funciòn IGUAL, etc. siempre me sale igual, pero la macro me dice que
son distintas.

He probado de todo, y no resulta nada, ayuda please.

Este es el codigo, no me permite subir archivos.

Sub SIGUIENTEBALANCE()
'
' SIGUIENTEBALANCE Macro
'

'
If Range("D9") = "" Then
MsgBox ("Llene la fecha.")
Else
If Range("totalactivo") = 0 Or Range("totalpasivo") = 0 Or
Range("totalpatrimonio") = 0 Then
MsgBox ("El Total Activo, Total Pasivo y Total Patrimonio deben ser valores
diferentes a cero.")
Else
If Range("totalactivo") <>
Range("totalpasivoypatrimonio") Then
MsgBox ("El Total Activo debe ser igual al Total Pasivo más el
Patrimonio.")
Else
Sheets("Tablas").Visible = True
Sheets("Tablas").Select
Range("I4").Select
ActiveCell.FormulaR1C1 = "SI"
Sheets("Tablas").Select
ActiveWindow.SelectedSheets.Visible = False
Application.Goto Reference:="inicioresultado3"
End If
End If
End If

Preguntas similares