Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como buscar datos en una hoja y mostrarlos en otra a medida que se escribe en Textbox


.

Anteriormente presenté una macro que buscaba datos en la hoja de Excel a medida que se escribía en textbox, en ese oportunidad te presentó un ejemplo de macro que permite buscar datos en otra hoja distinta a la cual se muestran los datos, es decir Busca datos en una hoja y muestra los mismos en otra hoja distinta.

Otras pequeñas macros interesantes son: macro que sólo permite en el Textbox ingresar texto o string, macro que sólo deja ingresar números en los Textbox, otra es macro que escribe las barras automáticamente al ingresar las fechas.

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  
El ejemplo se puede descargar en forma GRATUITA desde el link del el final del post, una vez descargado se podrá observar que en la Hoja1 existen dos textbox; en la Hoja2 se encuentra la base de datos a filtrar, al escribir en el Textbox1 o Textbox2 se busca por detalle y marca; la macro filtra los datos de la base de datos colocando los datos en la Hoja1.

En el vídeo que sigue se puede ver la explicación de la macro con un mayor lujo de detalles.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.


if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}

Código que se inserta en la Hoja donde se requiere el filtro

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets(«Hoja1»).Range(«A2»).Value = «*» & TextBox1.Text & IIf(TextBox1.Text = «», «», «*»)
    Call Searching
‘Application.DisplayAlerts = True
‘Application.ScreenUpdating = True
End Sub

Private Sub Searching()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets(«Hoja2»).FilterMode = True Then Sheets(«Hoja2»).ShowAllData
    uf = Sheets(«Hoja2»).Range(«A» & Cells.Rows.Count).End(xlUp).Row
    Sheets(«Hoja2»).Range(«C4:C» & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range(«A1:A2»), Unique:=False
Sheets(«Hoja1»).Range(«A5:H100000»).Clear
Set RG = Sheets(«Hoja2»).Range(«A5», Sheets(«Hoja2»).Range(«H5»).End(xlDown)).SpecialCells(xlCellTypeVisible)
RG.CurrentRegion.Offset(1, 0).Copy
Sheets(«Hoja1»).Range(«A5»).PasteSpecial
Sheets(«Hoja1»).TextBox1.Activate
If Sheets(«Hoja1»).FilterMode = True Then Sheets(«Hoja1»).ShowAllData
‘Application.DisplayAlerts = True
‘Application.ScreenUpdating = True
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets(«Hoja1»).Range(«E2»).Value = «*» & TextBox2.Text & IIf(TextBox2.Text = «», «», «*»)
    Call Searching1
‘Application.DisplayAlerts = True
‘Application.ScreenUpdating = True
End Sub

Private Sub Searching1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets(«Hoja1»).FilterMode = True Then Sheets(«Hoja1»).ShowAllData
    uf = Sheets(«Hoja1»).Range(«A» & Cells.Rows.Count).End(xlUp).Row
    Sheets(«Hoja1»).Range(«D4:D» & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range(«E1:E2»), Unique:=False
    
Sheets(«Hoja1»).Range(«A5:H100000»).Clear
Set RG = Sheets(«Hoja2»).Range(«A5», Sheets(«Hoja2»).Range(«H5»).End(xlDown)).SpecialCells(xlCellTypeVisible)
RG.CurrentRegion.Offset(1, 0).Copy
Sheets(«Hoja1»).Range(«A5»).PasteSpecial
If Sheets(«Hoja1»).FilterMode = True Then Sheets(«Hoja1»).ShowAllData
Sheets(«Hoja1»).TextBox2.Activate
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends