Tengo un codigo que me permite buscar un fragmento de texto en una lista, lo que no se es como llevar éste codigo para que busque en una hoja y lo pegue en otra hoja.
Agrego el código por cualquier duda.
Gracias
Sub Buscar_Texto_En_Lista()
'dimensiones
Dim lngUltimaFila As Long
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim lngPegarColumna As Long, lngPegarFila As Long
Dim x As Integer, n As Integer
'quitar resultados anteriores
Range("I9:l4000").ClearContents
'columna + fila donde empezar/terminar búsqueda
lngColumna = 6
lngFila = 9
lngUltimaFila = Columns(lngColumna).Range("A65536").End(xlUp).Row
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 9
lngPegarFila = 9
'objeto a buscar
strObjetoBuscar = Range("I5").Text 'celda a filtrar
If strObjetoBuscar = "" Then GoTo 99
'minúsculas
strObjetoBuscar = LCase(strObjetoBuscar)
'bucle: realizar búsqueda
For n = lngFila To lngUltimaFila
'evaluación
lngResultado = InStr(1, Cells(n, 6), strObjetoBuscar, vbTextCompare)
'copiar/pegar
If lngResultado > 0 Then
Range(Cells(n, 6), Cells(n, 8)).Copy 'para cambiar las columnas que quiero copiar/pegar
Range( _
Cells(lngPegarFila, lngPegarColumna), _
Cells(lngPegarFila, lngPegarColumna + 2)) _
.Select
ActiveSheet.Paste
lngPegarFila = lngPegarFila + 1
End If
Next n
'aparcar
Application.CutCopyMode = False
Range("I5").Select
99:
End Sub
Tal y como tienes el código, estás pegando en la hoja activa:
'copiar/pegar
If lngResultado > 0 Then
Range(Cells(n, 6), Cells(n, 8)).Copy 'para cambiar las columnas que quiero copiar/pegar
Range( _
Cells(lngPegarFila, lngPegarColumna), _
Cells(lngPegarFila, lngPegarColumna + 2)) _
.Select
ActiveSheet.Paste
En primer lugar vamos a definir unas constantes (o variables si lo prefieres como tienes para las columnas y filas) con los nombres de las hojas de origen y destino
Const HojaOrigen = "tuhojadeorigen"
Const HojaDestino = "tuhojadedestino"
Ahora para antes de pegar los valores vamos a activar la hoja de destino, pegamos y volvemos a activar la hoja de origen para seguir buscando valores.
Worksheets(HojaDestino).Activate
Range( _
Cells(lngPegarFila, lngPegarColumna), _
Cells(lngPegarFila, lngPegarColumna + 2)) _
.Select
ActiveSheet.Paste
Worksheets(HojaOrigen).Activate
espero que te sirva; ya me dirás qué tal
------
Ya sé Excel, pero necesito más
------
Ya sé Excel, pero necesito más.
Ya quedó!!!! muchas gracias!!!!
Gracias ya quedooooo!!!!
me alegro de haber sido de ayuda
------
Ya sé Excel, pero necesito más
------
Ya sé Excel, pero necesito más.
Hola, me preguntaba si de la misma manera que busco unos datos y despue slo pego en otra hoja, seria posible buscar un dato y despues borrarlos de la misma lista?
Debe de ser de una forma parecida no?
Muchas gracias or su tiempo y ayuda
Si por ejemplo quieres eliminar la fila de la celda activa, puedes emplear lo siguiente
Rows(ActiveCell.Row).Delete
Si sólo quieres borrar el contenido, emplea el método ClearContents en vez de Delete
------
Ya sé Excel, pero necesito más
------
Ya sé Excel, pero necesito más.
Como hago si quisiera que
strObjetoBuscar = Range("I5").Text 'celda a filtrar
no solo fuese una sola celda sino que el programa busqque varios datos?. por ejemplo que sea desde la i5 hasta la i100 y que busque cada uno de esos datos en el rango de busqueda.
puedes hacer un bucle que recorra todas las celdas que hay en I5:I100, para cada una de ellas repites los pasos.
algo parecido a esto:
Dim Celda As Range
For Each Celda In Range("I5:I100").Cells
With Celda
'aquí los pasos que quieras dar con cada celda
...
End With
Next
------
Ya sé Excel, pero necesito más ahora en pdf
------
Ya sé Excel, pero necesito más.