Busco ayuda sobre la búsqueda de valores utilizando macros con Microsoft Excel

El motivo de mi consulta es que tengo esta macro que en alguna ocasión me la diste:
ActiveCell.Offset(0, 1).Select
valor = ActiveCell.Value
Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(1, 0).End(xlDown)).Select
Set n = Selection.Find(What:=valor)
If Not n Is Nothing Then
MsgBox "EL SIGUIENTE CLIENTE TIENE OTROS PRODUCTOS"
Selection.Find(What:=valor).Activate
Pero si el cliente tiene 10 productos solo me busca y selecciona 1 y necesito que me seleccione y copie los 10 productos y me los pegue en otra hoja

1 respuesta

Respuesta
1
Claro la macro locaiza un valor porque para eso estaba creada, si necesitas más valores hay que hacer un ciclo que recorra toda la Columna y vaya extrayendo los valores iguales a la otra hoja:
valor=ActiveCell.Value
Do While ActiveCell.Value<>""
If ActiveCell.Value=valor Then
ActiveCell.Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A1").Select
If ActiveCell.Value="" Then
ActiveCell.PasteSpecial
Else
ActiveCell.PasteSpecial
End If
Sheets("Hoja1").Select
ActiveCell.Offset(1,0).Select
Loop
Mira a ver si ahora ya si te sirve
>Un saludo
>Julio
Hola la pegue pero me sale un mensaje de error que dice loop si do
Bien aquí esta corregida:
valor=ActiveCell.Value
Do While ActiveCell.Value<>""
If ActiveCell.Value=valor Then
ActiveCell.Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A1").Select
If ActiveCell.Value="" Then
ActiveCell.PasteSpecial
Else
Do While ActiveCell.Value<>""
End If
Sheets("Hoja1").Select
ActiveCell.Offset(1,0).Select
End If
Loop
Pruebalá y me cuentas.
Esta es la macro que tengo y solo me falta una parte para que funcione bien... esta parte esta marcada más abajo...
Sub PEGADO()
Application.ScreenUpdating = False
Range("F48").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Range("F48").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("G19").Select
'-------------------------------------
Windows("CARLOS.xls").Activate
'-------------------------------------
ActiveCell.Offset(1, 0).Select
If ActiveCell.Interior.Color = RGB(255, 255, 153) Then
MsgBox ("ACTUALIZAR")
Exit Sub
Else
End If
ActiveCell.Offset(0, 1).Select
valor = ActiveCell.Value
Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(1, 0).End(xlDown)).Select
Set n = Selection.Find(What:=valor)
If Not n Is Nothing Then
ActiveCell.Offset(-1, -1).Select
Range(ActiveCell, ActiveCell.Offset(0, 44)).Select
Range(ActiveCell, ActiveCell.Offset(0, 44)).Copy
Sheets("Hoja2").Select
Range("a1").Select
ActiveCell.PasteSpecial
Sheets("Hoja1").Select
ActiveCell.Offset(0, 1).Select
Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(1, 0).End(xlDown)).Select
Set n = Selection.Find(What:=valor)
Selection.Find(What:=valor).Activate
valor = ActiveCell.Value
Do While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
ActiveCell.Offset(0, -1).Select
Range(ActiveCell, ActiveCell.Offset(0, 44)).Select
Range(ActiveCell, ActiveCell.Offset(0, 44)).Copy
Sheets("Hoja2").Select
ActiveSheet.Range("A1").Select
If ActiveCell.Value = "" Then
ActiveCell.PasteSpecial
Else
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.PasteSpecial
End If
Sheets("Hoja1").Select
Range(ActiveCell.Offset(1, 1), ActiveCell.Offset(0, 0).End(xlDown)).Select
Set n = Selection.Find(What:=valor)
Selection.Find(What:=valor).Activate    -----'''''''''''''''pero en esta parte se detiene cuando no encuentra mas valores que correspondan al buscado... esto es lo unico que me falta no se si me puedes ayudar gracias
End If
Loop
Else
ActiveCell.Offset(-1, -1).Select
Range(ActiveCell, ActiveCell.Offset(0, 43)).Select
Range(ActiveCell, ActiveCell.Offset(0, 43)).Copy
'-----------------------------------------------
Windows("FICHA TECNICA CARLOS V13.xls").Activate
'-----------------------------------------------
Range("D13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End If
End Sub
Lógicamente le has puesto que busque la variable valor y si la encuentra que la seleccione, pero si no la encuentra... no hace nada.
Set n = Selection.Find(What:=valor)
Selection.Find(What:=valor).Activate    -----'''''''''''''''pero en esta parte se detiene cuando no encuentra mas valores que correspondan al buscado... esto es lo unico que me falta no se si me puedes ayudar gracias
Por ejemplo si no lo encuentras sal del ciclo:
If valor Is Nothing Then
Exit Do
End If
End If
Loop
Else
ActiveCell.Offset(-1, -1).Select
Range(ActiveCell, ActiveCell.Offset(0, 43)).Select
Range(ActiveCell, ActiveCell.Offset(0, 43)).Copy
'-----------------------------------------------
Windows("FICHA TECNICA CARLOS V13.xls").Activate
'-----------------------------------------------
Range("D13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End If
End Sub
No sé si te sirve porque desconozco que quieres hacer cuando no encuentre más valores.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas