Newsgroup: it.comp.lang.visual-basic
Titolo: Problemino Vb EXCEL (per esperti)

Salve,
ho un file di Excel con due fogli di lavoro.
Il primo l'ho chiamato "Main", il secondo "DBase".
DBase contiene il Database dei clienti con Cognome (colonna A), Nome
(colonna B), Età (colonna C), Città (colonna D), Indirizzo (colonna E),
Debito (colonna F).
Vorrei creare, nel foglio Main, tre ComboBox.
ComboBox1 collegato a Cognome,
ComboBox2 collegato a Età,
Combobox3 collegato a Città.
Se in Combobox1 seleziono un cognome, una cella del foglio Main mi indica
anche il nome e gli altri dati relativi a quel cognome;
se in ComboBox2 seleziono un'età, mi spunta un elenco delle persone con
quell'età;
se in Combobox3 seleziono una Città, mi vengono fuori tutte le persone
dell'elenco che abitano in quella città.
Il mio problema è:
come faccio a tirar fuori un elenco con le persone di una certa età E che
abitano in una certa città ?
Ovvero come faccio per indicare due criteri ?
Qualcuno può aiutarmi ?
Vi mostro quel che ho scritto finora:
Private Sub ComboBox1_Change()
Dim Cognome As String
Cognome = ComboBox1.Value
    For Each C In Worksheets("DBase").Range("A2:A200")
        If C.Value Like Cognome Then
        Cells(10, 1) = C.Offset(0, 0)
        Cells(10, 2) = C.Offset(0, 1)
        Cells(10, 3) = C.Offset(0, 2)
        Cells(10, 4) = C.Offset(0, 3)
        Cells(10, 5) = C.Offset(0, 4)
        Cells(10, 6) = C.Offset(0, 5)
        End If
    Next
End Sub
____________________________-
Private Sub ComboBox2_Change()
Dim Eta As String
Dim ROW, As Integer
ROW = 10
Eta = ComboBox2.Value
    For Each C In Worksheets("DBase").Range("C2:C200")
        If C.Value Like Eta Then
            ROW = ROW + 1
            Cells(ROW, 1) = C.Offset(0, 0)
            Cells(ROW, 2) = C.Offset(0, 1)
            Cells(ROW, 3) = C.Offset(0, 2)
            Cells(ROW, 4) = C.Offset(0, 3)
            Cells(ROW, 5) = C.Offset(0, 4)
            Cells(ROW, 6) = C.Offset(0, 5)
        End If
    Next
End Sub
____________________________
Private Sub ComboBox3_Change()
Dim Citta As String
Dim ROW As Integer '
ROW = 10
Citta = ComboBox3.Value
    For Each C In Worksheets("DBase").Range("D2:D200")
        If C.Value = Citta Then
            ROW = ROW + 1
            Cells(ROW, 1) = C.Offset(0, 0)
            Cells(ROW, 2) = C.Offset(0, 1)
            Cells(ROW, 3) = C.Offset(0, 2)
            Cells(ROW, 4) = C.Offset(0, 3)
            Cells(ROW, 5) = C.Offset(0, 4)
            Cells(ROW, 6) = C.Offset(0, 5)
         End If
    Next
End Sub
Grazie in anticipo a chi saprà darmi una mano.

Il metodo più semplice potrebbe essere semplicemente eseguire prima un
filtro e poi l'altro su un terzo foglio.
Oppure usare un oggetto Ado:
1) Definisci un Nome per la sezione che contiene il database
2) Costruisci una funzione tipo:
Sub Leggi(sCondizione as string)
    ' dove sCondizione sarà qualcosa tipo "NOME='ROSSI' AND CITTA='ROMA'"
    Dim CON As New ADODB.Connection
    Dim RS As New ADODB.Recordset
    CON.Open "Provider=MSDASQL.1;Persist Security
Info=False;Mode=Read;Extended Properties=" & """" & "DSN=Excel
Files;DBQ=C:\Cartel1.xls;DefaultDir=C:;DriverId=22;MaxBufferSize=2048;PageTi
meout=5;" & """"
    ' Ovviamente c:\cartel1 va sotituito con il nome del file xls
    RS.Open "SELECT * FROM ZONA_DATI WHERE " & sCondizione, CON,
adOpenDynamic, adLockReadOnly
    ' ovviamente anche qui ZONA_DATI sarà il nome che hai assegnato alla tua
zona dati
    ' poi fai quello che vuoi:
    Do While Not RS.EOF
        Debug.Print RS.Fields!COGNOME
        RS.MoveNext
    Loop
    'alla fine non dimenticarti di chiudere l'rs e la conn
    rs.close
    conn.close
    set rs=nothing
    set conn=nothing
End Sub
Questo è chiaramente un sistema un po più complesso, ma molto più
flessibile, anche perchè ti permette di separare nettamente il foglio dati
da quello "programma".
ciao
ugo

 da quello "programma".
Si, se riuscissi ad usarlo ... sarebbe bello !
La soluzione penso che, a questo punto, sia affidarsi ad un buon libro e
vedere di capirci qualcosa.
Qualcuno può consigliarmene ?
Vorrei in pratica imparare ad usare bene il Visual Basic Editor di EXCEL per
iniziare.
Grazie a tutti.-