Una uyuda sobre combos y filtros de VB6.0

Hola experto, mira tengo 3 problemas de los cuales te comento solo una para no volverte loco, te explico:
tengo 3 combox que son alimentados cada uno de una hoja de excel, hasta aqui no hay problema, el problema empieza cuando necesito filtrarlos y no encuentro el codigo que me ayude, es decir si en el primer combo tengo ciudades, en el segundo combo deben de aparecer todas las pblaciones de esa ciudad que eleji en el combo1, y en el tercer combo deben de aparecer todas las personas que eleji de la opcion del combo2.
El codigo con que cargo los datos desde excel al combo es el siguiente, insisto, aqui no tengo problema:
Set xLibro = objExcel.Workbooks.Open(App.Path + "\reaseguradores.xls")
'Hacemos el Excel Visible o invisible
objExcel.Visible = False
    With xLibro
        ' Hacemos referencia a la Hoja
    With .Sheets(1)
        'Recorremos la fila desde la 1 hasta la 374
    For Fila = 1 To 374
        'Agregamos el valor de la fila que corresponde a la columna 2
    Combo1.AddItem .Cells(Fila, 2)
    Next
    End With
' *********************************************************************
        'llenado del primer combo....   
    With .Sheets(2)
    For Fila = 2 To 7
    combo_ramo.AddItem .Cells(Fila, 1)
    Next   
    End With
'llenado del segundo combo ....
 With .Sheets(2)
 For Fila = 2 To 21
 combo_subramo.AddItem .Cells(Fila, 2)
 Next
 End With
 'llenado del tercer combo....
 With .Sheets(2)
 For Fila = 2 To 47
 combo_subsubramo.AddItem .Cells(Fila, 3)
 Next
 End With
ojala y me puedas ayudar experto, saludos y gracias!!!!!

1 respuesta

Respuesta
1
Pues bien, he encontrado una solución a tu caso, te la comento a ver qué te parece:
Lo primero que te sugiero hacer es organizar tu información de forma adecuada, podría ser como el siguiente ejemplo que elaboré:
Hoja "Ciudades" almacena el código y el nombre de la cuidad.
IdCiudad Ciudad
1        Ciudad 1
2        Ciudad 2
3        Ciudad 3
4        Ciudad 4
5        Ciudad 5

Hoja "Poblaciones" almacena el código de la ciudad a la que pertenece la población y el nombre de la población.
IdCiudad Poblacion
1        Poblacion 1
1        Poblacion 2
2        Poblacion 3
2        Poblacion 4
3        Poblacion 5
3        Poblacion 6
4        Poblacion 7
4        Poblacion 8
5        Poblacion 9
5        Poblacion 10

Hoja "Personas" almacena el código de la población a la que pertenece la persona y el nombre de la persona.
IdPoblacion Persona
1           Persona 1
1           Persona 2
2           Persona 3
2           Persona 4
3           Persona 5
3           Persona 6
4           Persona 7
4           Persona 8
5           Persona 9
5 Persona 10
6 Persona 11
6 Persona 12
7 Persona 13
7 Persona 14
8 Persona 15
8 Persona 16
9 Persona 17
9 Persona 18
10 Persona 19
10 Persona 20

Y el código que puedes usar para realizar lo que necesitas es el siguiente: [si así lo deseas elabora este mismo ejemplo y un nuevo proyecto en VB para que veas como quedaría, sólo copia y pega todo :)]
Dim xls As New Excel.Application
Dim IdCiudad As Integer, IdPoblacion As Integer
'estos valores constantes los debes cambiar por los que utilizas en tu sistema
Const FinalPoblacion = 11 'número de celda donde termina la lista de poblaciones
Const FinalPersonas = 21 'número de celda donde termina la lista de personas
Const FinalCiudad = 6 'número de celda donde termina la lista de ciudades
'******************************************************
Private Sub Combo1_Click()
    Dim i As Integer
    With xls
        ObtenerIdCiudad
        'limpiar el Combo2
        Combo2. Clear
        'activar la hoja "Poblaciones"
        .Sheets("Poblaciones").Activate
        For i = 2 To FinalPoblacion
            'recorrer la hoja "Poblaciones"
            If .Cells(i, 1) = IdCiudad Then
                'si la Poblacion pertenece a la Ciudad seleccionada en el Combo 1 entonces agregarla al Combo2
                Combo2.AddItem
                .Cells(i, 2)
            End If
        Next i
        'colocar el primer valor de la lista
        Combo2.Text = Combo2.List(0)
    End With
End Sub
'******************************************************
Private Sub Combo2_Click()
    Dim i As Integer
    With xls
        ObtenerIdPoblacion
        'limpiar el Combo3
        Combo3. Clear
        'activar la hoja "Personas"
        .Sheets("Personas").Activate
        For i = 2 To FinalPersonas
            'recorrer la hoja "Personas"
            If .Cells(i, 1) = IdPoblacion Then
                'si la Persona pertenece a la Poblacion seleccionada en el Combo2 agregarla al Combo3
                Combo3.AddItem
                .Cells(i, 2)
            End If
        Next i
        'colocar el primer valor de la lista
        Combo3.Text = Combo3.List(0)
    End With
End Sub
'******************************************************
Private Sub Form_Load()
    Dim i As Integer
    With xls
        'abrir el "Libro1"
        .Workbooks.Open App.Path & "\libro1.xls"
        'activar la hoja "Ciudades"
        .Sheets("Ciudades").Activate
        For i = 2 To 6
            'recorrer la lista y llenar el Combo1
            Combo1.AddItem .Cells(i, 2)
        Next i
        'colocar el primer valor de la lista
        Combo1.Text = Combo1.List(0)
    End With
End Sub
'******************************************************
Private Sub ObtenerIdCiudad()
    Dim i As Integer
    With xls
        'recorrer la columna de IdCuidad en la hoja "Ciudades" para obtener el IdCiudad
        For i = 2 To FinalCiudad
            'activar la hoja "cuidades"
            .Sheets("Ciudades").Activate
            If .Cells(i, 2) = Combo1.Text Then
                'al momento de encontrar la ciudad seleccionada en el Combo1 recupera el IdCiudad y se sale del ciclo
                IdCiudad = .Cells(i, 1)
                Exit For
            End If
        Next i
    End With
End Sub
'******************************************************
Private Sub ObtenerIdPoblacion()
    Dim i As Integer
    With xls
        'recorrer la columna de IdCuidad en la hoja "Poblaciones" para obtener el IdCiudad a la cual pertenece la poblacion
        For i = 2 To FinalPoblacion
            'activar la hoja "Poblaciones"
            .Sheets("Poblaciones").Activate
            If .Cells(i, 2) = Combo2.Text Then
                'al momento de encontrar la ciudad seleccionada en el Combo1 recupera el IdCiudad y se sale del ciclo
                IdPoblacion = .Cells(i, 1)
                Exit For
            End If
        Next i
    End With
End Sub
'******************************************************
Private Sub Form_Unload(Cancel As Integer)
    'cerra el libro
    xls.Workbooks.Close
    Set xls = Nothing
End Sub.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas