Uso spesso anche io subform per simulare l'utilizzo di listbox proprio perchè permette maggior personalizzazione grafica e ti ringrazio perchè qualche anno fa proprio da te ho imparato l'uso dei caratteri grafici per evitare appesantimenti causati da immagini.
Se posso permettermi personalmente non mi piace molto l'effetto ottenuto premendo SU e GIU perchè attiva i controlli rimasti attivi (ma anche i disabilitati che hanno FC) quindi aggiungerei al load qualcosa di simile ad esempio
'FORMATTAZIONE CONDIZIONALE
With Me.tFC
.FormatConditions.Delete
Set myFC = .FormatConditions.Add(acExpression, , "[ID]=[tCurrent]")
.FormatConditions(0).ForeColor = RGB(255,0,0)
.FormatConditions(0).Enabled = False
End With
With Me.ID
.FormatConditions.Delete
Set myFC = .FormatConditions.Add(acExpression, , "[ID]=[tCurrent]")
.FormatConditions(0).ForeColor = RGB(255,0,0)
.FormatConditions(0).Enabled = False
End With
With Me.Descrizione
.FormatConditions.Delete
Set myFC = .FormatConditions.Add(acExpression, , "[ID]=[tCurrent]")
.FormatConditions(0).ForeColor = RGB(255,0,0)
.FormatConditions(0).Enabled = False
End With
Set myFC = Nothing
in questo esempio le formattazioni le ho fatte identiche ma solo per brevità ma da codice si riesce anche a dare l'enabled a false, l'effetto mi piace di più, infatti premendo SU e GIU si passa al record precedente o successivo come da listbox.
EDIT:
che volendolo ridurre potrebbe essere (previa assegnazione della proprietà TAG nei vari controlli)
'FORMATTAZIONE CONDIZIONALE
For Each C In Me.Controls
If InStr(1, C.Tag, "#FC#") > 0 Then
C.FormatConditions.Delete
Set myFC = C.FormatConditions.Add(acExpression, , "[ID]=[tCurrent]")
C.FormatConditions(0).ForeColor = RGB(255,0,0)
End If
Next
Set myFC = Nothing