Error en una línea de código con la función FIND

Alguien me podría ayudar a corregir un error que me sale en una línea de código. El código es el siguiente:

Sub MenorDiferencia2()
Dim RangoDatos As Range
Dim ValorObjetivo As Double
Set RangoDatos = Range("C3:C810")
ValorObjetivo = Evaluate("=INDEX(" & RangoDatos.Address & ",MATCH(MIN(INDEX(ABS(" & RangoDatos.Address & "-$U$4),,)),INDEX(ABS(" & RangoDatos.Address & "-$U$4),,),0),)")
RangoDatos.Find(What:=ValorObjetivo).Activate
Set RangoDatos = Nothing
End Sub

En la línea RangoDatos.Find(What:=ValorObjetivo).Activate  me dice variable de objeto o bloque with no establecido no se a que se deba.

1 respuesta

Respuesta
1

El método .Find devuelve un objeto Range que no has definido. Te respondo de memoria desde el celular, pero estoy casi seguro que estas usando el método Find mal.

Un ejemplo de como debería ser:

With RangoDatos

Set otroRange = .Find(bla bla)

If Not otroRange = Nothing Then otroRange.Activate

End With

Donde otroRange es otra variable Range que debes declarar y definir.

Ya en la PC lo he confirmado. Si el valor que buscas no se encuentra, te da ese error obviamente. El código que te escribí es la manera correcta de hacerlo excepto por un detalle que escribí mal.

En lugar de ser:

If Not otroRange = Nothing

Debe ser:

If Not otroRange Is Nothing

Solo cambia el signo = por "is"

¡Gracias! Andy machin el valor si lo encontraba lo que pasa es que como dices no había declarado ni definido el objeto range que arroja el método find. Ya me sirve me quedo así.

Sub MenorDiferencia()
Dim rangodatos As Range
Dim ValorObjetivo As Double
Set rangodatos = Range("C3:C810")
With rangodatos
ValorObjetivo = Evaluate("=INDEX(" & rangodatos.Address & ",MATCH(MIN(INDEX(ABS(" & rangodatos.Address & "-$U$4),,)),INDEX(ABS(" & rangodatos.Address & "-$U$4),,),0),)")

Set otrorango = .Find(What:=ValorObjetivo)
If Not otrorango Is Nothing Then otrorango.Activate

End With

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas