Salve a tutti.
Sto cercando di creare delle combobox per filtrare dei dati su un file excel. La tabella origine dei dati è su un foglio chiamato "data"; su il secondo foglio "View" dello stesso file ho creato 3 pulsanti con 2 combobox dove filtrare i dati e avere ciò che mi serve.
Premetto che ho APPENA iniziato a vedere il codice VBA di excel e non ho assolutamente competenze in programmazione. Tutto quello che so è perchè dalla scorsa settimana ho trovato un po di esempi di codice su internet e li ho in qualche modo cercati di capire per riprodurli.
Copio qui il codice che ho scritto relativo ai pulsanti "Upload", doce carico i valori nella combobox; e il pulsante "Show data", che mi filtra i dati che cerco. (il terzo tasto è reset ma è inutile che ve lo copio)

codice:
 Private Sub cmdShowData_Click()
strSQL = "SELECT * FROM [data$] WHERE"
If cmbStatus.Text <> "" Then
strSQL = strSQL & " [Status]='" & cmbStatus.Text & "'"
End If

If cmbSO.Text <> "" Then
    If cmbStatus.Text <> "" Then
        strSQL = strSQL & " AND [SO]='" & cmbSO.Text & "'"
    Else
        strSQL = strSQL & " [SO]='" & cmbSO.Text & "'"
    End If
End If
If cmbStatus.Text <> "" Or cmbSO.Text <> "" Then
closeRS
OpenDB

rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
    If rs.RecordCount > 0 Then
    Sheets("View").Visible = True
    Sheets("View").Select
    Range(Selection, Selection.End(xlDown)).ClearContents

    ActiveCell.CopyFromRecordset rs
        Else
         MsgBox "I was not able to find any matching records.", vbExclamation + vbOKOnly
Exit Sub
    End If
End If
End Sub

Private Sub cmdUpload_Click()
strSQL = "Select distinct [Status] from [data$] Order by [Status] "
closeRS
OpenDB
cmbStatus.Clear

rs.Open strSQL, cnn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
    Do While Not rs.EOF
        cmbStatus.AddItem rs.Fields(0)
        rs.MoveNext
    Loop
Else
MsgBox "I was not able to find any unique Products.", vbCritical + vbOKOnly
Exit Sub
End If
'----------------------------------------------------------------------------------
strSQL = "Select distinct [SO] from [data$] Order by [SO] "
closeRS
OpenDB
cmbSO.Clear

rs.Open strSQL, cnn, adOpenKeyset, adLockPessimistic
    If rs.RecordCount > 0 Then
         Do While Not rs.EOF
            cmbSO.AddItem rs.Fields(0)
            rs.MoveNext
         Loop
    Else
       MsgBox "I was not able to find any unique Products.", vbCritical + vbOKOnly
       Exit Sub
    End If
End Sub
La connessione tra la tabella origine dei miei dati e il foglio "View" la faccio in un modulo a parte che copio qui:
codice:
Option Explicit
Public cnn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public strSQL As String

Public Sub OpenDB()
    If cnn.State = adStateOpen Then cnn.Close
    cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _
    ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
    cnn.Open
End Sub

Public Sub closeRS()
    If rs.State = adStateOpen Then rs.Close
    rs.CursorLocation = adUseClient
End Sub
Ho 2 domande da fare. La prima: Ora le 2 combobox sono tra loro indipendenti, cioè indipendentemente dalla voce che seleziono nella combobox1, mi compaiono nella combobox2 tutte le voci possibili che ci sono nella tabella origine dati. Invece io voglio che nella combobox 2 mi compaia la lista filtrata in base alla selezione della combobox1 e viceversa. Ho letto su altri post che bisogna cambiare la proprietà RowSource dopo che si verifica l'evento "selezione della combobox1". Giusto? Se si come si fa?
Un altro modo è utilizzando "SelectedIndexChanged" ma ancora se giusto non so come farlo.
Posso rompere le scatole a qualcuno e chiedere se me lo spiega in modo telegrafico?
Seconda domanda: Se il foglio "data" (dove c'è la tabella fonte dei miei dati) fosse su un altro file Excel, come dovrei fare?
Grazie in anticipo