Activar un buscador de texto al abrir una hoja

Tengo un archivo con una lista de clientes en la hoja2 y en la hoja1 tengo un menú que al darle click a un botón me envía al inicio de la hoja2. La idea mía es que al darle click en el botón de menú, me envíe a la hoja dos y se active un cuadro de búsqueda donde yo escriba el código del cliente y me envíe ahí (parecido al comando Ctrl+b pero que se abra automáticamente)y resalte todos los datos en color azul desde esa celda hasta la celda 20 a la derecha .
Seria algo así:
1:- (en hoja1) click a boton "clientes"
2:- La macro me envía a la "hoja2" y me muestra un cuadro "escriba código de cliente" escribo "005" y doy intro.(Si no conozco el código, que me pida una palabra clave y según ésta, me envíe a una lista de clientes y códigos)
3:- Selecciona de: A20:I25
A B C D E F G H I ...
01 tienda fecha ch ed sg in mr br bto <= campos
20 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
21 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
22 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
23 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
24 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
25 005 dato1 dato2 dato3 dato4 dato4 dato6 dato7 dato8
4:- Activa un cuadro"¿desea imprimir selección?
5:- "si"- imprime selección + fila de campos
6:- "no" finaliza.
Espero haberlo explicado bien, de antemano muchas gracias. Saludos

1 respuesta

Respuesta
1
Eso es equivalente a :
1 ingresar código
2 filtrar los registros de ese código
3 consultar si se imprime o no
4 imprimir o salir
Buen día.
Esa es una excelente opción ¿cuál seria el código para hacer ese filtro automáticamente al tipear el código de cliente?
Acá te dejo el modulo completo:
Option Explicit
Dim existe As Boolean
Sub buscar()
Dim d As String
d = InputBox("Buscar", "buscador")
If Len(d) = 0 Then Exit Sub
filtrar (d) ' llama al sub que realiza el filtro segun criterio indicado
If existe = False Then
MsgBox d & " no se registra en el rango ", vbCritical
Exit Sub ' si el dato no existe en rango sale del sub
End If
d = MsgBox("Imprime Rango ?", vbYesNo + vbInformation)
If d = 6 Then imprime
End Sub
Sub filtrar(dato As String)
Dim n As Long
'verifica que existen datos en la hoja
n = Application.WorksheetFunction.CountA(Range("A:A"))
If n = 0 Then Exit Sub
'verifica que el dato ingresado existe en el rango antes de filtrar
If Application.WorksheetFunction.CountIf(Range("A:A"), dato) = 0 Then
existe = False
Exit Sub
Else
existe = True
End If
'ejecuta filtro
[A1].Select
Selection.AutoFilter
ActiveSheet.Range("$A$1" & ":" & "$B$" & n).AutoFilter Field:=1, Criteria1:=dato
End Sub
Sub imprime()
'imprime area seleccionada, previamente filtrada
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,1,,,TRUE,,FALSE)"
Range("A1").Select
End Sub
Ok debes pegar todo esto en un solo modulo, esto se divide así:
Macro buscar
Macro filtrar
Macro imprimir
Ya puedes deducir que hace cada una.
Para efecto de estos macros considere lo siguiente
Rango de datos columnas A y B - debes ampliar el espectro en el macro filtrar, específicamente esta linea:
ActiveSheet.Range("$A$1" & ":" & "$B$" & n).AutoFilter Field:=1, Criteria1:=dato
si tus datos teminan en columna T debes reemplazar $B$ por $T$
El campo de criterio en este ejemplo es la columna 1, tu debes modificar ese valor poniendo el numero de la columna que ti deseas filtrar, para ello cambia el numero 1 que aparece en la linea anterior Field:=1
También debes modificar una linea en el macro filtrar, esta:
If Application.WorksheetFunction.CountIf(Range("A:A"), dato) = 0 Then
Debes indicar la referencia de la columna que contiene el dato a buscar, en caso de este ejemplo es col A.
Realizadas estas modificciones ya puedes correr el macro buscar.
Como trabaja:
Ingresas el dato a buscar
Si no existe, se te informa y termina la ejecución
Si existe, filtra los datos
Una vez filtrados se te pregunta si deseas imprimir
Si reusas termina ejecución, si aceptas imprime el rango seleccionado
Eso es todo.
No olvides Cerrar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas