Foros del Web » Soporte técnico » Ofimática »

[SOLUCIONADO] Agregar nueva opcion de buisqueda

Estas en el tema de Agregar nueva opcion de buisqueda en el foro de Ofimática en Foros del Web. Hola. Pues eso, quiero agregar nueva opcion a estas 2. La opcion a agregar es "CIUDAD" ya trate de agregar pero no me dá talla. ...
  #1 (permalink)  
Antiguo 29/07/2014, 08:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Agregar nueva opcion de buisqueda

Hola. Pues eso, quiero agregar nueva opcion a estas 2.
La opcion a agregar es "CIUDAD" ya trate de agregar pero no me dá talla.

Código:
En el evento Private Sub UserForm_initialize() tengo
'Carga el ComboBox  llamado FiltrarPor
    FiltrarPor.AddItem "CÓDIGO" 'ESTA EN COLUMNA A
    FiltrarPor.AddItem "NOMBRE" 'ESTA EN COLUMNA B

Le agrego este mas
    FiltrarPor.AddItem "CIUDAD"

 quedando asi
    FiltrarPor.AddItem "CÓDIGO"
    FiltrarPor.AddItem "NOMBRE"
    FiltrarPor.AddItem "CIUDAD"  'ESTA EN COLUMNA D

este es codigo involucrado para tal fin

Private Sub buscar_Change()  'TEXTBOX DONDE ESCRIBO LO QUE QUIERO BUSCAR, segun voy escribiendo va apareciendo
    Application.ScreenUpdating = False
    lista.RowSource = ""
    Sheets("Clientes").Range("A:G").Copy Sheets("Filtro").Range("A1")
    Sheets("Filtro").Range("A2:G2").Insert Shift:=xlDown
    Sheets("Filtro").Range("B2:G2") = ""
    Sheets("Filtro").Range("A2") = Buscar
'AQUI PARA LA D
    
    If FiltrarPor.ListIndex = 1 Then 'Buscar por nombre
       Sheets("Filtro").Range("A2") = ""
       Sheets("Filtro").Range("B2") = Buscar
    End If
    
    Sheets("Filtro").Range("A1:G22").AdvancedFilter _
                     Action:=xlFilterCopy, _
                     CriteriaRange:=Sheets("Filtro").Range("A1:G2"), _
                     CopyToRange:=Sheets("Filtro").Range("H1:N22")
    Sheets("Filtro").Rows(2).Delete
    fila = Sheets("Filtro").Range("H" & Rows.Count).End(xlUp).Row
    If fila > 1 Then lista.RowSource = "Filtro!H2:N" & fila
    Application.ScreenUpdating = True
End Sub

LE AGREGUE ARRIBA ESTE PARA LA D
            If FiltrarPor.ListIndex = 1 Then 'Buscar por nombre
       Sheets("Filtro").Range("A2") = ""
       Sheets("Filtro").Range("B2") = ""
       Sheets("Filtro").Range("D2") = Buscar
    End If 
Recuerdo que en la hoja donde hará ñla busqueda, los titulos EN LA LINEA 1 son diferentes a CODIGO, NOMBRE Y CIUDAD

Por CÓDIGO o NOMBRE si hace la busqueda bien pero no logro que me la haga por CIUDAD
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 29/07/2014 a las 08:15
  #2 (permalink)  
Antiguo 29/07/2014, 09:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Agregar nueva opcion de buisqueda

La propiedad ListIndex se refiere a la posición del elemento seleccionado:

-1 = No se seleccionó un elemento
0 = primero
1 = segundo
2 = tercero
bla bla bla

Código vb:
Ver original
  1. If FiltrarPor.ListIndex = 2 Then
  2.       ' Aquí haces la búsqueda por ciudad
  3. End If
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 29/07/2014, 15:14
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Agregar nueva opcion de buisqueda

Como lo mensionaste, le agregue esto y quedo asi
Código:
        If FiltrarPor.ListIndex = 2 Then 'Buscar por CIUDAD
       Sheets("Filtro").Range("A2") = ""
       Sheets("Filtro").Range("B2") = ""
       Sheets("Filtro").Range("D2") = Buscar
    End If
Mi error era en esta línea If FiltrarPor.ListIndex = 2 Then que la dejaba en 1 y tenia que cambiarla a 2.

Muy agradecido Triby

Pedi cierre y aun me falta algo. Si me puedes orientar que no lo gro en que punto del código meterlo

Esto

Código:
    Set f = FiltrarPor  'ComboBox de Filtrar por
                If f.value = -1 Then
            MsgBox "¿seleccione " & f, vbOKOnly + vbQuestion, "SELECCION"
    Exit Sub
    End If
Para que si se comienza a escribir en el TextBox Buscar y si no se ha seleccionado nada en FiltrarPor (ComboBox de Filtrar por) que mande este mensaje.

Estuve a tratar en casi todas las posicione spero al tratar de abrir el form, me manda el mensaje del MsgBox y después abre y luego si escribo sin seleccionar por donde firltrar vuelve el mensaje.

En este ultimo punto esta bien pero al abrir el form esta mal
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 29/07/2014 a las 16:26
  #4 (permalink)  
Antiguo 29/07/2014, 18:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Agregar nueva opcion de buisqueda

Esa validación no debe estar en la inicialización del formulario, ni en los eventos exit o change del campo de texto, debe ser parte del botón "Aceptar" nada más.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 29/07/2014, 20:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Agregar nueva opcion de buisqueda

Lo que quisiera es que si no se coloca ningún Filtro (por distracción) mende mensaje de adevertencia
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #6 (permalink)  
Antiguo 29/07/2014, 21:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Agregar nueva opcion de buisqueda

Precisamente, de eso se trata la cosa, ejemplo:

Código vb:
Ver original
  1. Private Sub BotonAceptar_Click()
  2.     Dim valor As String
  3.     Valor = Trim(CuadroDeTexto.Text)
  4.     If Valor = "" Then
  5.          MsgBox "Teclea el texto a buscar"
  6.     Else
  7.         ' Aquí realizas las búsqueda
  8.    End If
  9. End Sub
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 30/07/2014, 11:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Agregar nueva opcion de buisqueda

Gracias Triby. Muy amable de tu parte tomares tu tiempo para llegar a un buen término, teniendo alguien como yo que poco o casi nada se de estos menesteres

Estoy adaptándolo porque no existe botón para validar la búsqueda. La búsqueda es según se va escribiendo en el TextBox (Buscar) va apareciendo en el ListBox (lista) las líneas contentivas de lo que se va escribiendo, luego selecciono del ListBox (lista) la línea que deseo

Estoy tratando de adpaptarlo en el evento
Código:
Private Sub FiltrarPor_Change()
    buscar_Change
    Buscar.value = ""
    Buscar.SetFocus
End Sub
Porque en el evento Private Sub buscar_Change() no encuentro donde colocarlo sin que me mande ese mensaje al abrir el form

Voy probando en el evento de arriba FiltrarPor_Change.

Te dejo todo el código del que hace parte la búsqueda.

Código:
Private Sub FiltrarPor_Change()
    buscar_Change
    Buscar.value = ""
    Buscar.SetFocus
End Sub

Private Sub buscar_Change()
    Application.ScreenUpdating = False
    lista.RowSource = ""
    Sheets("Clientes").Range("A:G").Copy Sheets("Filtro").Range("A1")
    Sheets("Filtro").Range("A2:G2").Insert Shift:=xlDown
    Sheets("Filtro").Range("B2:G2") = ""
    Sheets("Filtro").Range("A2") = Buscar
    
    If FiltrarPor.ListIndex = 1 Then 'Buscar por nombre
       Sheets("Filtro").Range("A2") = ""
       Sheets("Filtro").Range("B2") = Buscar
    End If
    
    If FiltrarPor.ListIndex = 2 Then 'Buscar por CIUDAD
       Sheets("Filtro").Range("A2") = ""
       Sheets("Filtro").Range("B2") = ""
       Sheets("Filtro").Range("D2") = Buscar
    End If
    
    Sheets("Filtro").Range("A1:G22").AdvancedFilter _
                     Action:=xlFilterCopy, _
                     CriteriaRange:=Sheets("Filtro").Range("A1:G2"), _
                     CopyToRange:=Sheets("Filtro").Range("H1:N22")
    Sheets("Filtro").Rows(2).Delete
    fila = Sheets("Filtro").Range("H" & Rows.Count).End(xlUp).Row
    If fila > 1 Then lista.RowSource = "Filtro!H2:N" & fila
    Application.ScreenUpdating = True
End Sub
No me voy a complicar mucho, si da da si no va a quedar sin mensage tal como estaba
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 30/07/2014 a las 11:23

Etiquetas: columna, opcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.