Problema con macro, no compara valor de variable con valor de celda

Buen dia
Tengo una macro que de una tabla elimina las filas vacías, después de eso cuenta las filas que tienen datos dentro de un rango colocando el resultado en una variable (hasta ahí todo va bien), después deseo comparar la variable con el valor de una celda determinada, si es diferente debe enviar un msgbox, sin embargo no se que falla en el momento de la comparación, ya que envía el mensaje aunque los dos datos son iguales.
Sub Filas()
Dim d As Double
Dim e21 As Double
ActiveWorkbook.Sheets(1).Select 'Selección de celda en hoja diferente del mismo libro
Range("a50").Select 'Nos movemos a la celda A50
Selection.End(xlUp).Select 'Subimos y se detiene en la última celda con información
ultima_fila = ActiveCell.Row 'Extraemos la fila de la celda activa
Range("a2").Select 'El bucle empieza a ejecutarse en A2
For I = 1 To ultima_fila 'El bucle se repite n veces.
If ActiveCell = " " Then 'Si la celda activa es igual a no entonces
Selection.EntireRow.Delete 'Elimina la fila completa de la selección
Else
ActiveCell.Offset(1, 0).Select 'Si no está vacía se desplaza una fila hacia abajo
End If
Next
rango = Range("d2:d47")
d = Application.WorksheetFunction.CountA(rango)
Range("I1").Value = d ' COLOCA NUMERO DE CELDAS LLENAS
Sheets("e.2.1").Select 'Selección de celda en hoja diferente del mismo libro
Range("A6").Select 'Nos movemos a la celda A6
Selection.End(xlUp).Select 'Subimos y se detiene en la última celda con información
ultima_fila = ActiveCell.Row 'Extraemos la fila de la celda activa
Range("A2").Select 'El bucle empieza a ejecutarse en A3
For I = 1 To ultima_fila 'El bucle se repite n veces.
If ActiveCell = " " Then 'Si la celda activa es igual a no entonces
Selection.EntireRow.Delete 'Elimina la fila completa de la selección
Else
ActiveCell.Offset(1, 0).Select 'Si no está vacía se desplaza una fila hacia abajo
End If
Next
rango = Range("a2:a5")
e21 = Application.WorksheetFunction.CountA(rango)
Range("ag2").Value = e21 ' COLOCA NUMERO DE CELDAS LLENAS
End Sub
Sub Validar()
'Compara numero de filas de tablas con numero de hojas ideas
Sheets("IDEASCAT").Select
If d <> Range("M126").Value Then MsgBox ("Faltan colindancias")
If e21 <> Range("q164").Value Then MsgBox ("Falta construcción E2.1")
end sub
De antemano agradezco el tiempo y la ayuda

1 respuesta

Respuesta
1

Estás evaluando el valor de la variable 'de' que fue definida en otra subrutina y por eso, en esta última llamada Sub Validar, no tienen valor.

Para poder utilizar el valor de las variables dentro de distintos eventos o distintas subrutinas, debes declararlas como públicas al inicio del módulo.

Public d As Double
Public e21 As Double

Y quitá esas líneas del Sub Filas.

Sdos. No olvides finalizar las 2 consultas abiertas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas