30/06/2010, 14:39
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses Puntos: 88 | |
buscar con marcro en excel Hola! Pablo.
Es una lástima que no hayas respondido a ninguna de mis dos preguntas.
De modo que voy a mostrarte la siguiente variante:
Código:
Sub BUSCAR_PRODUCTO()
Dim palabra_a_buscar As String, colH As Range, LR As Long, C As Range
palabra_a_buscar = InputBox("Palabra (o parte de la palabra) a buscar", "Pregunta")
If palabra_a_buscar = "" Then
MsgBox "Ingresar Datos", vbCritical: Exit Sub
End If
Application.ScreenUpdating = False
Set colH = [H3]: Set C = [a2]
If Not IsEmpty(colH) Then Set colH = Range("H" & Rows.Count).End(xlUp).Offset(1)
LR = Range("A" & Rows.Count).End(xlUp).Row
Do Until C Is Nothing
If C.Row > LR Then Exit Do
If InStr(C, palabra_a_buscar) = 0 Then _
Set C = Range(C, "A" & LR).Find(What:=palabra_a_buscar, _
LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext)
If Not C Is Nothing Then
Union(Cells(C.Row, "C"), Cells(C.Row, "E")).Copy colH
Set colH = colH.Offset(1)
End If
Set C = C.Offset(1)
Loop
Application.ScreenUpdating = True
MsgBox "Búsqueda finalizada", vbOKOnly, "Final"
End Sub
Como observarás: este código es mucho más eficiente que el que mostraras puesto que no requiere recorrer -una a una- las celdas de la columna A.
Por otro lado y mediante:
Cells(C.Row, "C")
Cells(C.Row, "E")
estoy copiando el contenido de las columnas "C" y "E".
Entonces advertirás que es muy sencillo incorporar o quitar columnas.
Saludos, Cacho.
Última edición por mrocf; 02/07/2010 a las 13:13 |