Fai attenzione a 3 cose:
1) Per capire serve sapere, chi ti da suggerimenti non sempre ti fornisce la panoramica didattica, ma è orientato alla soluzione che però ha lo svantaggio di NON consentirti di elaborare in modo critico... e questo spetta a te, andare a capire come e perchè... e magari chiedere, serve però conoscenza che il Forum fornisce in parte...
2) Il VBA di solito è sempre più comodo per tanti motivi, quello che hai fatto è corretto, io lo preferisco anche se è possibile fare tutto da QUERY, ma serve consaiderare anche quì di cosa si parla, con le Query il DEBUG ad esempio non è fattibile...!
Se nella Combo_Padre, cancelli il criterio, la Combo_Figlia cosa deve mostrare...?, per me NULLA se sono dipendenti.
Nel tuo caso cosa succede...?
3) Il Requery della Combo, dopo aver riassegnato il ROWSOURCE serve...? [NO]
Io avrei quindi fatto così:
Private Sub Marca_AfterUpdate()
Dim sSQL As String
If Len(Me!Marca & vbNullstring) > 0 then
sSQL = "SELECT IDModello, Marca FROM Modelli " & "WHERE Marca = '" & Me.Marca & "'"
Else
sSQL = "SELECT IDModello, Marca FROM Modelli " & "WHERE 1=0"
End If
Me.Modello.RowSource = sSQL
End Sub
Detto questo fossi in te mi porrei un quesito... sarà mai possibile che queste relazioni tra Tabelle, considerabili GERARCHICHE, vengano fatte da campi di TESTO senza avere riferimenti Indicizzati Univoci non affetti dalla Digitazione Umana...?
La risposta è NO, se hai 2 Tabelle, Marche e Modelli, queste Tabelle dovrebbero avere un campo CHIAVE, definito PK non alterabile e più snello possibile, solitamente si usano i campi COUNTER, ti suggerisco di capirne la funzione e la comodità...!