mini aplicaciones en Excel_ Búsqueda Inteligente en Excel sin formulario ActiveX (versión...
Transcript of mini aplicaciones en Excel_ Búsqueda Inteligente en Excel sin formulario ActiveX (versión...
7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html 1/5
Home Blog Lista de Artículos Descargas Videos MiniCurso Contacto
Búsqueda Inteligente en Excel sin formulario ActiveX(versión simplificada)
Es esta entrada veremos un método alternativo para lograr “Búsquedas inteligentes en Excel”. En la
entrada “Búsqueda Inteligente con ComboBox” habíamos util izado un formulario ActiveX. En esta
oportunidad vamos a util izar solo TextBox y macros.
El código a util izar sigue el mismo razonamiento que en la entrada de referencia, solo que hacemos
una simplificación util izando las propiedades de las tablas dinámicas, para ahorrarnos código
complicado. Quizás no sea el método más elegante pero es muy simple y se l legan a tener buenos
resultados.
De la otra forma tendríamos que programar el equivalente a lo que hace la tabla dinámica al
actualizarse. Así que con este método se olvidan de eso.
Proceso:
1. En una hoja tenemos los datos, que es la misma base de datos que util izamos en el ejemplo de
“Búsqueda Inteligente con ComboBox”.
Como ven, se agrego una imagen con una lupa, que vinculada a una macro simple nos l levará
a la parte de búsqueda. También se puede hacer un hipervínculo sobre la imagen hacía la hoja
Subscribe
excelminiapps31 videos | 254 subscribers
Recibe las actualizaciones por e-mail :
Introduzca su e-mail Subscribe
Excel Avanzado Macros VBAProject Management no Macro Base de Datos
Games Educativo Activex Web
Vis i tas del mes
7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html 2/5
de “buscar”, que es mas simple aún.
2. En otra hoja tenemos lo que sería el “formulario de búsqueda”.
El formulario de búsqueda lo creamos de acuerdo a nuestra imaginación, a nuestra necesidad
o a nuestra comodidad. Debe contener todos los campos que nos interesan.
o Campo ID: en este campo es donde introduciremos el código de empleado
correspondiente.
o Campo Ubicación: en este campo introduciremos una formula “BuscarV” para que de
acuerdo al código que figura en “ID” me muestre la ubicación para ese empleado.
o Campo Teléfono: util izamos un “BuscarV” para ver el teléfono para el empleado con ese
ID.
o Campo Puesto: de acuerdo al valor introducido en ID con un “BuscarV” vemos el puesto
que ocupa el empleado.
o El campo dónde dice nombre es una celda en blanco donde se introducirá el campo
para la búsqueda. En la imagen no se ve pero en ese lugar colocaremos un Control
ActiveX, un “TextBox” al que se le quitaran los colores de borde y relleno.
o Imagen Home: esta imagen se util izara que para vinculada a una macro simple nos
lleve a la base de datos de nuevamente. También se puede hacer un hipervínculo
sobre la imagen hacía la hoja de “Empleados”, que es mas simple aún.
Lo anterior es acerca de los elementos que se ven, los elementos que hacen al panel de control.
3. El control “TextBox” nos sirve para util izar el método “Texbox_Change”. Es decir que cuando
cambia algo dentro del control ejecute una acción determinada.
4. Otro elemento que util izaremos es una tabla dinámica, esta tabla estará ubicada en la parte
inferior del campo “nombre”. Esta estará vinculada a los datos de los empleados pero
util izaremos en el campo “fi la” solo el campo “nombre de empleado”.
El rotulo de la fi la se ocultara y cuando no haya dato dentro del “TextBox” no veremos nada, ya
que equivale a poner en el fi ltro de la tabla dinámica el valor “vacío” o doble comillas.
5. La parte complicada es la macro, por decirlo de alguna manera, ya que debemos hacer
algunas ediciones de un código básico.
Debemos grabar una macro en donde usemos un fi ltro sobre la tabla dinámica con “contiene”.
Luego editaremos esta macro vinculando el texto de fi ltro con el texto que figura en el
“TextBox” del campo Nombre. El objetivo de esto es que cuando varié el contenido del Textbox
actualice el fi ltro de la tabla dinámica.
17,614
¿el blog es útil? ayude a mantenerlo!
7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html 3/5
El código es el siguiente:
-------------------------------------------------------------------------------------------------------------------------
Private Sub TextBox1_Change()
‘el código siguiente es para ocultar los refrescos de pantalla
Application.ScreenUpdating = False
‘util izamos el condicional if para que de acuerdo al contenido del texbox ejecute una acción,
If TextBox1.Text = "" Then
‘si el texto de la caja se vuelve vació ejecuta lo siguiente
‘el código siguiente es el que se uso como base, que es la macro grabado en primera instancia.
‘se cambio la variable “Value1” a vacío.
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE
COMPLETO").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
‘el código siguiente es para restablecer el ancho de columna cuando actualicemos la tabla
dinámica.
Columns(4).ColumnWidth = 30.29
‘este código se util iza para vaciar todos los campos del formulario.
Range("D4").FormulaR1C1 = ""
‘si la caja contiene algún texto ejecuta las siguientes acciones.
Else
‘este código lo obtenemos con la macro básica pero cambiamos en “Value1” por el contenido
del TexBox como ven.
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE
COMPLETO").PivotFilters.Add Type:=xlCaptionContains, Value1:=TextBox1.Text
Columns(4).ColumnWidth = 30.29
End If
End Sub
-------------------------------------------------------------------------------------------------------------------------
El código anterior es el corazón de la mini aplicación pero falta un par de consideraciones.
6. Seleccionar un elemento de la l ista desplegable.
Cuando util icemos el formulario para realizar una búsqueda podría mostrarnos varios
elementos, debemos seleccionar uno de ellos. Para eso util izamos un método doble clic.
El código es el siguiente:
-------------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
‘el código siguiente es para evitar que al hacer doble clic me genere el ruido molesto de error
Cancel = True
‘util izamos un condicional if que funciona solamente cuando coincide la posición de la celda
en la que hacemos doble clic con el rango determinado, en este caso como es un ejemplo “D12:D100”
If Not Intersect(Target, Range("D12:D100")) Is Nothing Then
‘seteamos el texbox von el valor de la celda seleccionada en la tabla dinámica
TextBox1.Text = ActiveCell.Text
‘usamos la función coincidir “match” de Excel para buscar el valor del ID para el empleado
seleccionado.
7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html 4/5
Etiquetas: Excel Avanzado, Macros
Range("D4").Value = WorksheetFunction.Match(TextBox1.Text,
Sheets("empleados").Range("C7:C26"), 0)
‘luego dejo vacía la tabla dinámica ya que encontramos nuestro valor buscado.
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE
COMPLETO").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Columns(4).ColumnWidth = 30.29
‘hacemos foco sobre el textbox
TextBox1.Activate
End If
End Sub
-------------------------------------------------------------------------------------------------------------------------
7. Falta una ultima parte, hay que prever que pasa cuando introducimos un código manualmente
en “ID”. Util izaremos el método “worksheet_change”
-------------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
‘se usa este código para evitar el error cuando introducimos un código que no esta en la BD.
On Error Resume Next
If Not Intersect(Target, Range("D4")) Is Nothing Then
‘util izo la función buscarv para ubicar el valor en el textbox correspondiente al código
introducido.
TextBox1.Text = WorksheetFunction.VLookup(Range("D4"),
Sheets("empleados").Range("B7:F26"), 2, False)
‘l impio la l ista
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE
COMPLETO").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Columns(4).ColumnWidth = 30.29
Range("D4").Select
End If
End Sub
-------------------------------------------------------------------------------------------------------------------------
Nota: los códigos anteriores deben estar en la hoja de código de la hoja “buscar”.
Espero que les guste la idea, lo pueden poner en práctica. En las próximas entradas veremos como
podemos util izar un formulario ActiveX nuevamente.
Para recibir las actualizaciones se pueden inscribir por alguno de los medios. Además pueden revisar
la página de Descargas dónde iremos colgando algunos ejemplos.
Éxitos!
Keys:
· Búsqueda inteligente en Excel
· Búsqueda inteligente con Textbox en Excel
· Search Engine in Excel
· Búsqueda incremental en Excel
Recomendar esto en Google
7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html 5/5
Entrada más reciente Entrada antiguaPágina principal
Suscribirse a: Enviar comentarios (Atom)
Publicar un comentario en la entrada
No hay comentarios:
JPConsulting Todos Los Derechos Reservados 2012. Con la tecnología de Blogger.