¿Puedo usar Find en vba para copiar algún dato en específico?

Lo que pretendo es que a partir de la fila que yo ingrese en el inputbox (8) me busque todo lo que diga NotaCredito y una vez que lo encuentre me copie lo de la hoja "xml 2018" de la columna "M" o sea el dato UUID Y me lo pegue en la hoja "Nc 2018" en la columna "N" en la siguiente fila libre,

Y si no lo encuentra entonces mensaje " no se encontró registro alguno"

1 respuesta

Respuesta
1

Quizás te estás olvidando en qué hoja realizás la búsqueda. Por ejemplo asegurate así:

Set busco = Sheets("XML 2018").Columns("F").Find(Codi, , , xlWhole)

Pero como además querés que la búsqueda se haga a partir de cierta fila la instrucción correcta sería:

fini = Sheets("XML 2018").Range("F" & Rows.Count).End(xlUp).Row
Set busco = Sheets("XML 2018").Range("F" & ini & ":F" & fini).Find(Codi, , , xlWhole)

Además si tenés un texto en fila 21, la primer fila libre es 22 . Si necesitas que sea la 10 debes hacer la búsqueda desde fila 21 hacia arriba.

Tienes toda la razón, mi primer texto buscado ya lo ubica en la fila 13 y ya pude pasar el dato que necesitaba pero aun así queda más datos, como le hago para que el otro texto que se encuentra en la fila 29 haga la misma acción, porque adecuando la macro con su enorme apoyo queda así, Mil Gracias

Sub separando()
Codi = "NotaCredito"
  If IsEmpty(Codi) Then Exit Sub
  Ini = Val(InputBox("Ingrese el numero de fila a considerar como la primera,"))
  If Not IsNumeric(Ini) Or Ini = 0 Then
     MsgBox "Nro invàlido"
     Exit Sub
  End If
  filx = Sheets("NC 2018").Cells(212, 13).End(xlUp).Row + 1
  Fini = Sheets("XML 2018").Range("F" & Rows.Count).End(xlUp).Row
  Set busco = Sheets("XML 2018").Range("F" & Ini & ":F" & Fini).Find(Codi, LookIn:=xlValues, lookat:=xlWhole)
  If Not busco Is Nothing Then
  Range("m" & busco.Row).Copy Destination:=Sheets("NC 2018").Range("N" & filx)
  Else
  MsgBox "No se encontro registro alguno", , "Sin coincidencias"
  End If
End Sub

o es forzoso usar un For para iniciar de abajo hacia arriba o como?

Creo qué esta línea sigue mal porque buscando desde la fila 212 la primera libre queda debajo de la marcada en gris con &... quizás quisiste escribir fila 21?

filx = Sheets("NC 2018").Cells(212, 13).End(xlUp).Row + 1

La macro para una búsqueda continua quedaría así:

Sub separando()
'arregada x Elsamatilde
Codi = "NotaCredito"
  If IsEmpty(Codi) Then Exit Sub
  ini = Val(InputBox("Ingrese el numero de fila a considerar como la primera,"))
  If Not IsNumeric(ini) Or ini = 0 Then
     MsgBox "Nro invàlido"
     Exit Sub
  End If
'1er fila destino
filx = Sheets("NC 2018").Cells(21, 13).End(xlUp).Row + 1
  'Set busco = Range("F" , Ini :F" & Range("F1844", Rows.Count).End(xlUp).Row).Find(Codi, LookIn:=xlValues, lookat:=xlWhole)
'falta asegurarte la hoja y el fin de rango
fini = Sheets("XML 2018").Range("F" & Rows.Count).End(xlUp).Row
Set busco = Sheets("XML 2018").Range("F" & ini & ":F" & fini).Find(Codi, , , xlWhole)
If Not busco Is Nothing Then
    'guardo la fila del 1er dato encontrado
    filb = busco.Row
    'Inica el bucle:
    Do
        Range("m" & busco.Row).Copy Destination:=Sheets("NC 2018").Range("N" & filx)
        'suma 1 a la fila destino y pasa a la fila sgte
        filx = filx + 1
        'se busca el siguiente
        Set busco = Sheets("XML 2018").Range("F" & ini & ":F" & fini).FindNext(busco)
        'se repite el bucle hasta llegar al fin de rango o se vuelva a la 1er fila
    Loop While Not busco Is Nothing And busco.Row <> filb
Else
    MsgBox "No se encontro registro alguno", , "Sin coincidencias"
End If
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas