Variable de objeto no establecida (error 91) Cells.Find()

Mi código en bva es:

Sub Busca_()

Dim Fila_continua As Integer
Dim Valor_uuid As String

Fila_continua = 3
Do

Worksheets(1).Select 'Selecciono la primera hoja
Valor_uuid = Range("A" & Fila_continua).Value ' asigno el valor de la celda "A3" a la variable Valor_uuid.
Valor_uuid = Mid(Valor_uuid, 1, 18) ' tomo solo los primeros 18 digitos del valor de la variable Valor_uuid.

 ++++En esta linea me marca el error+++++

Worksheets(2). Cells.Find(Valor_uuid).Value 'Busco el valor de la variable Valor_uuid en la segunda hoja

 ++++En esta linea me marca el error+++++

If Valor_uuid = "" Then ' si el valor de la variable está vacío o sea que no encuentra el valor salgo del bucle
Exit Do
End If
Worksheets(2). Cells.Find(Valor_uuid).Select ' Si no he salido del bucle, SELECCIONO en la hoja 2 LA CELDA donde sí encuentra el valor.
ActiveCell.Offset(0, -1).Select 'De la celda actual me muevo y selecciono una celda a la izquierda donde contiene el valor que necesito copiar, este nunca es una celda vacía.
ActiveCell.Copy 'Copio la celda activa
Worksheets(1).Range("G" & filavar).PasteSpecial xlPasteAll 'Pego la celda en la hoja 1 en la celda "A3" (que irá en incremento)
Fila_continua = Fila_continua + 1 'Aquí solo agrego una fila mas para ir reccorriendo la siguiente fila A4 y en sucesion

Loop While Valor_uuid = "" 'Si está vacío salgo del bucle

End Sub

¿Alguna idea?, apenas estoy iniciándome en este tema y ya llevo dos días tratando de encontrar la solución :,(

Apreciaría mucho su ayuda. Gracias =)

Respuesta

Hol.a

Aunque el error es medio genérico, en tu caso parece que ocurre porque el método "Find" no encuentra el valor de tu variable "Valor_uuid" ya que por defecto buscará una palabra exactamente igual.

Abraham Valencia

1 respuesta más de otro experto

Respuesta
2

Al final lo he hecho funcionar de la siguiente manera:

Sub Busca_()

Dim Fila_continua As Integer
Dim Valor_uuid As String
Dim finduid As Range 'defino un objeto solo para probar :/
Fila_continua = 3
Do

Worksheets(1).Select 'Selecciono la primera hoja
Valor_uuid = Range("A" & Fila_continua).Value ' asigno el valor de la celda "A3" a la variable Valor_uuid.
Valor_uuid = Mid(Valor_uuid, 1, 18) ' tomo solo los primeros 18 digitos del valor de la variable Valor_uuid.
Worksheets(2).Select 'selecciono la hoja 2
Set finduid = Worksheets(2).Cells.Find(Valor_uuid) 'Defino un objeto por desesperación sin comprender por qué. Busco el valor de la variable Valor_uuid en la segunda hoja
If finduid Is Nothing Then ' si el valor de la variable está vacío o sea que no encuentra el valor salgo del bucle
Exit Do
End If
Worksheets(2). Cells.Find(Valor_uuid).Select ' Si no he salido del bucle, SELECCIONO en la hoja 2 LA CELDA donde sí encuentra el valor.
ActiveCell.Offset(0, -1).Select 'De la celda actual me muevo y selecciono una celda a la izquierda donde contiene el valor que necesito copiar, este nunca es una celda vacía.
ActiveCell. Copy 'Copio la celda activa
Worksheets(1).Select 'Selecciono la hoja 1
Range("G" & Fila_continua).Select 'selecciono la celda donde quiero pegar el valor
ActiveCell. PasteSpecial xlPasteAll 'Pego la celda copiada con valores exactos (estoy copiando y pegando fechas y eventualmente estas se intercambian en el mes y dia)
Fila_continua = Fila_continua + 1 'Aquí solo agrego una fila mas para ir reccorriendo la siguiente fila A4 y en sucesion
Loop Until Valor_uuid = "" 'Si está vacío salgo del bucle

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas