You are on page 1of 5

7/16/13

mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)

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 utilizado un formulario ActiveX. En esta oportunidad vamos a utilizar solo TextBox y macros. El código a utilizar sigue el mismo razonamiento que en la entrada de referencia, solo que hacemos una simplificación utilizando 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 llegan a tener buenos resultados.

excelminiapps
31 videos | 254 subscribers

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.

Subscribe

Proceso: 1. En una hoja tenemos los datos, que es la misma base de datos que utilizamos en el ejemplo de “Búsqueda Inteligente con ComboBox”.

Recibe las actualizaciones por e-mail :

Introduzca su e-mail

Subscribe

Excel

Avanzado

Macros

VBA

Project M anagement no M acro Base de Datos
Games Educativo Activex Web

Vi s i ta s del mes

Como ven, se agrego una imagen con una lupa, que vinculada a una macro simple nos llevará a la parte de búsqueda. También se puede hacer un hipervínculo sobre la imagen hacía la hoja

excelminiapps.blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.html

1/5

También se puede hacer un hipervínculo sobre la imagen hacía la hoja de “Empleados”. que es mas simple aún. Luego editaremos esta macro vinculando el texto de filtro con el texto que figura en el “TextBox” del campo Nombre. Otro elemento que utilizaremos es una tabla dinámica. En otra hoja tenemos lo que sería el “formulario de búsqueda”. Es decir que cuando cambia algo dentro del control ejecute una acción determinada.614 El formulario de búsqueda lo creamos de acuerdo a nuestra imaginación. 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. El rotulo de la fila se ocultara y cuando no haya dato dentro del “TextBox” no veremos nada. 5. En la imagen no se ve pero en ese lugar colocaremos un Control ActiveX. o El campo dónde dice nombre es una celda en blanco donde se introducirá el campo para la búsqueda. por decirlo de alguna manera. El objetivo de esto es que cuando varié el contenido del Textbox actualice el filtro de la tabla dinámica. La parte complicada es la macro. 3.com/2012/10/busqueda-inteligente-con-combobox-en.blogspot. 17. esta tabla estará ubicada en la parte inferior del campo “nombre”. ya que equivale a poner en el filtro de la tabla dinámica el valor “vacío” o doble comillas. 4. Debemos grabar una macro en donde usemos un filtro sobre la tabla dinámica con “contiene”. o Imagen Home: esta imagen se utilizara que para vinculada a una macro simple nos lleve a la base de datos de nuevamente. o Campo ID: en este campo es donde introduciremos el código de empleado correspondiente. mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) de “buscar”. o Campo Puesto: de acuerdo al valor introducido en ID con un “BuscarV” vemos el puesto que ocupa el empleado. ya que debemos hacer algunas ediciones de un código básico. Esta estará vinculada a los datos de los empleados pero utilizaremos en el campo “fila” solo el campo “nombre de empleado”. que es mas simple aún. Lo anterior es acerca de los elementos que se ven. los elementos que hacen al panel de control. un “TextBox” al que se le quitaran los colores de borde y relleno. Debe contener todos los campos que nos interesan. El control “TextBox” nos sirve para utilizar el método “Texbox_Change”. a nuestra necesidad o a nuestra comodidad. ¿el blog es útil? ayude a mantenerlo! excelminiapps. o Campo Teléfono: utilizamos un “BuscarV” para ver el teléfono para el empleado con ese ID.7/16/13 2.html 2/5 .

Add Type:=xlCaptionEquals. debemos seleccionar uno de ellos. Para eso utilizamos un método doble clic. ActiveSheet.PivotFilters. Range("D4"). que es la macro grabado en primera instancia.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. Cuando utilicemos el formulario para realizar una búsqueda podría mostrarnos varios elementos.PivotTables("Tabla dinámica1"). en este caso como es un ejemplo “D12:D100” If Not Intersect(Target. If TextBox1.7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) El código es el siguiente: ------------------------------------------------------------------------------------------------------------------------Private Sub TextBox1_Change() ‘el código siguiente es para ocultar los refrescos de pantalla Application.PivotFilters. El código es el siguiente: ------------------------------------------------------------------------------------------------------------------------Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range.ScreenUpdating = False ‘utilizamos el condicional if para que de acuerdo al contenido del texbox ejecute una acción.PivotTables("Tabla dinámica1"). Value1:="" ‘el código siguiente es para restablecer el ancho de columna cuando actualicemos la tabla dinámica.Add Type:=xlCaptionContains.ClearAllFilters ActiveSheet.html 3/5 .PivotFields("NOMBRE COMPLETO").Text Columns(4).Text ‘usamos la función coincidir “match” de Excel para buscar el valor del ID para el empleado seleccionado.PivotTables("Tabla dinámica1"). excelminiapps.com/2012/10/busqueda-inteligente-con-combobox-en.29 ‘este código se utiliza para vaciar todos los campos del formulario.blogspot.ClearAllFilters ActiveSheet. Value1:=TextBox1. Else ‘este código lo obtenemos con la macro básica pero cambiamos en “Value1” por el contenido del TexBox como ven.Text = ActiveCell. Seleccionar un elemento de la lista desplegable.ColumnWidth = 30. ActiveSheet. ‘se cambio la variable “Value1” a vacío.PivotFields("NOMBRE COMPLETO"). Cancel As Boolean) Application.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.PivotFields("NOMBRE COMPLETO").PivotFields("NOMBRE COMPLETO"). Range("D12:D100")) Is Nothing Then ‘seteamos el texbox von el valor de la celda seleccionada en la tabla dinámica TextBox1.PivotTables("Tabla dinámica1").ColumnWidth = 30.FormulaR1C1 = "" ‘si la caja contiene algún texto ejecuta las siguientes acciones. Columns(4).ScreenUpdating = False ‘el código siguiente es para evitar que al hacer doble clic me genere el ruido molesto de error Cancel = True ‘utilizamos un condicional if que funciona solamente cuando coincide la posición de la celda en la que hacemos doble clic con el rango determinado.

Text = WorksheetFunction.VLookup(Range("D4"). É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 Etiquetas: Excel Avanzado.Add Type:=xlCaptionEquals.PivotTables("Tabla dinámica1"). Falta una ultima parte.Text. hay que prever que pasa cuando introducimos un código manualmente en “ID”.PivotFields("NOMBRE COMPLETO").blogspot. On Error Resume Next If Not Intersect(Target.Range("B7:F26"). Value1:="" Columns(4).Match(TextBox1. 2.html 4/5 .Activate End If End Sub ------------------------------------------------------------------------------------------------------------------------7.PivotFilters.ScreenUpdating = False ‘se usa este código para evitar el error cuando introducimos un código que no esta en la BD. Además pueden revisar la página de Descargas dónde iremos colgando algunos ejemplos.ClearAllFilters ActiveSheet. Value1:="" Columns(4).PivotFilters. Utilizaremos el método “worksheet_change” ------------------------------------------------------------------------------------------------------------------------Private Sub Worksheet_Change(ByVal Target As Range) Application. Sheets("empleados"). En las próximas entradas veremos como podemos utilizar un formulario ActiveX nuevamente.ColumnWidth = 30.ColumnWidth = 30.PivotFields("NOMBRE COMPLETO").7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) Range("D4"). lo pueden poner en práctica. Range("D4")) Is Nothing Then ‘utilizo la función buscarv para ubicar el valor en el textbox correspondiente al código introducido.Value = WorksheetFunction. False) ‘limpio la lista ActiveSheet.ClearAllFilters ActiveSheet.com/2012/10/busqueda-inteligente-con-combobox-en.PivotFields("NOMBRE COMPLETO").Add Type:=xlCaptionEquals. Macros excelminiapps. Para recibir las actualizaciones se pueden inscribir por alguno de los medios.PivotTables("Tabla dinámica1"). ActiveSheet. Sheets("empleados"). Espero que les guste la idea.PivotFields("NOMBRE COMPLETO"). 0) ‘luego dejo vacía la tabla dinámica ya que encontramos nuestro valor buscado.Range("C7:C26").29 ‘hacemos foco sobre el textbox TextBox1.PivotTables("Tabla dinámica1").Select End If End Sub ------------------------------------------------------------------------------------------------------------------------Nota: los códigos anteriores deben estar en la hoja de código de la hoja “buscar”.PivotTables("Tabla dinámica1").29 Range("D4"). TextBox1.

Con la tecnología de Blogger.html 5/5 .blogspot.com/2012/10/busqueda-inteligente-con-combobox-en.7/16/13 mini aplicaciones en Excel: Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) No hay comentarios: Publicar un comentario en la entrada Entrada más reciente Suscribirse a: Enviar comentarios (Atom) Página principal Entrada antigua JPConsulting Todos Los Derechos Reservados 2012. excelminiapps.