- non ho capito cosa hai fatto con le colonne della datagrid
quindi direi di buttarla e rimettere nella form una nuova pulita
la richiamiamo 'risultati'.
- metti nella form un controllo adodc, si chiama adodc1 (se vuoi dagli visible=false)
- fai click destro - proprietà
selezioni 'usa stringa di connessione' e ci copi "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Documents and Settings\Nicola\Desktop\Rubrica\Agenda.mdb"
vai in RecordSource e scrivi in Testo Command (SQL)
select * from utenti where 1<>1 ' per farti dare un recordset vuoto
clicca su applica/ok

- vai sulla datagrid
- in proprietà-> datasource-> seleziona adodc1
- fai click destro sulla datagrid -> recupera campi
se sulla datgrid sbucano fuori i nomi dei campi di utenti
vuol dire che finora siamo andati bene (c'è anche modo di personalizzare i nomi delle colonne farne sparire quelle che non vogliamo vedere ma per adesso saltiamo oltre)
codice:
form4.visible=false
Set cn = New ADODB.Connection

txtricerca = txtricerca.Text

cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Documents and Settings\Nicola\Desktop\Rubrica\Agenda.mdb"
Adodc1.RecordSource = "SELECT * FROM utenti where tipo like '" & txtricerca & "'"
Adodc1.Refresh

If Adodc1.Recordset.EOF Then
    MsgBox "La ricerca non ha prodotto nessun risultato."
End If

cn.Close
il codice è quasi uguale ho solo tolto
Adodc1.ConnectionString = cn.ConnectionString
e
Set risultati.DataSource = Adodc1

in quanto sono cose che facciamo nella 'form grafica'