macros!!

18/08/2005 - 23:46 por Manuel Sandoval | Informe spam
Hola a todos, parto por dar las gracias por su atención y disposición a
ayudar...

Les cuento, estoy haciendo una macro en excel, la cual debe buscar en una
columna determinado valor "Hon", al encontrar este valor, debe insertar una
fila y continuar buscando nuevas coincidencias, hasta ahora me resulta pero
solo hasta el primer valor...

alguien me podría dar una manito...


gracias
 

Leer las respuestas

#1 Héctor Miguel
19/08/2005 - 08:43 | Informe spam
hola, Manuel !

... macro... debe buscar en una columna determinado valor "Hon"
al encontrar este valor, debe insertar una fila y continuar buscando nuevas coincidencias
hasta ahora me resulta pero solo hasta el primer valor...



te paso dos ejemplos al final... -> uno utiliza los metodos .Find y .FindNext -> otro usa los autofiltros
-> con el Find necesitas 'monitorear' la direccion de la primer celda para finalizar el ciclo PERO...
como se inserta UNA fila... la direccion 'encontrada' de esa primer celda DEBE SER 'ajustada'...
[si se insertan mas de una fila... modifica el valor de la propiedad 'Offset(1)' <= OJO
-> el segundo 'debiera' ser mas 'rapido' [en caso de 'muchas' coincidencias
SOLO 'ajusta' los rangos donde estoy iniciando el autofiltro [lo tuve que suponer :))

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Busca_e_InsertaFila()
Dim Busca As String, Col As String, Celda As Range, Inicio As String
Busca = "Hon" ' <= pon aqui la palabra que se busca '
Col = "c" ' <= pon aqui la letra de la columna donde se buscara '
If Application.CountIf(Columns(Col), Busca) = 0 Then Exit Sub
With Columns(Col)
Set Celda = .Find(What:=Busca, SearchDirection:=xlNext)
Inicio = Celda.Offset(1).Address
Do
Celda.EntireRow.Insert
Set Celda = .FindNext(Celda)
Loop While Not Celda Is Nothing And Celda.Address <> Inicio
End With
Set Celda = Nothing
End Sub

Sub Filtra_e_InsertaFila()
Dim Busca As String, Col As String
Busca = "Hon"
Col = "c"
If Application.CountIf(Columns(Col), Busca) = 0 Then Exit Sub
If Cells(1, Col).AutoFilter Then Cells(1, Col).AutoFilter
With Range(Cells(1, Col), Cells(65536, Col).End(xlUp))
.Cells(1).AutoFilter Field:=1, Criteria1:=Busca
End With
With ActiveSheet.AutoFilter.Range
With .Offset(1).Resize(.Rows.Count - 1)
.EntireRow.Insert
End With
End With
Cells(1, Col).AutoFilter
End Sub

Preguntas similares