Macro para buscar cadena de texto

03/10/2017 - 19:08 por Nacho | Informe spam
Buenas tardes,
Esto no sé si se podrá hacer.
En HOJA1 y en el rango a1:b200, tendría un listado de artículos. En la columna A el código y en la columna B el texto.

En HOJA2, columna c y desde la fila 2, necesitaría que fuera escribiendo una cadena de texto y me fuera localizando el dato en HOJA1 columna B y una vez vea que tengo lo que busco, pinchar y se me quede escrito. Y así en todas las filas.

Uf creo que lo estoy explicando muy mal, espero que vuestras mentes brillantes me hayáis entendido.

Muchas gracias de antemano.

Preguntas similare

Leer las respuestas

#6 David_erh
19/10/2017 - 01:14 | Informe spam
Hola nuevamente; voy a describir un poco como tengo estructurado el modelo: supongamos que la Hoja1 tienes tu lista de items, con los encabezados en la fila 4, entonces en la Celda "B1" va el encabezado(que debe de ser el mismo que en la Celda "B4"); en la misma HOJA1 insertas un TextBox y lo posicionas sobre la celda "B2" (de manera tal que no se muestre el contenido de al celda "B2").
Al lado derecho del TextBox insertas un botón, que servirá para copiar el item que elegiste de la lista y que será copiado a la Hoja2.

En la Hoja2 Colocas el encabezado En la celda B1.

Ahora solo queda insertar el código:

Private Sub TextBox1_Change()
'este evento se ejecuta cada vez que se escribe en el textbox
'En al celda B2 se genera el texto adicionando un asterisco al inicio y al final del texto ingresado
Sheets("Hoja1").Range("B2").Value = "*" & TextBox1.Text & "*"
'Luego se llama al procedimiento de filtrado llamado BuscaTexto
Call BuscaTexto
End Sub

Sub BuscaTexto()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Lo primero es quitar cualquier filtrado anterior
If Sheets("Hoja1").FilterMode = True Then Sheets("Hoja1").ShowAllData
'Luego determinamos la ultima fila con datos
UltimaFila = Sheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
'Realizamos el filtro perzonalizado de acuerdo a los criterios buscados
Sheets("Hoja1").Range("B4:B" & UltimaFila).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("B1:B2"), Unique:úlse

End Sub

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Guardamos en una variable el texto seleccionado
TextoSeleccionado = ActiveCell.Text
'Determinamos la última fila vacia
UltimaFilaVacia = Sheets("Hoja2").Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
'Pegamos el texto celeccionado
Sheets("Hoja2").Range("B" & UltimaFilaVacia).Value = TextoSeleccionado

End Sub

Ya hice las pruebas y parece que funciona, si tienes una dirección de correo te podría enviar el modelo que hice.

Saludos.

David
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida