Je vraag is een beetje vaag, aangezien je het over 'een veld' hebt en dus blijkbaar niet over een specifiek veld praat. En dat betekent dus dat je ofwel code zoekt die je bij een aantal velden binnen één specifiek formulier kunt gebruiken, ofwel code die je op elke willekeurige plek op elk willekeurig formulier kunt aanroepen. De laatste variant is uiteraard het meest flexibel, en gek genoeg ook het makkelijkst te maken

.
Laat ik daar dus even van uit gaan. Dan heb je in ieder geval een aparte module nodig waarin je een generieke functie maakt die 3 dingen doet:
1. de originele kleur vastleggen
2. de nieuwe kleur instellen bij focus (had je goed gezien)
3. de originele kleur herstellen bij verlaten (LostFocus)
Die functies zien er dan zo uit:
Code:
Option Compare Database
Dim iKleur As Long
Code:
Function FocusKleur()
Dim obj As Control
Set obj = Screen.ActiveControl
iKleur = obj.BackColor
obj.BackColor = RGB(127, 200, 200)
End Function
Code:
Function oriKleur()
Dim obj As Control
Set obj = Screen.ActiveControl
obj.BackColor = iKleur
End Function
Het begint met het declareren van een Public variabele (die geldig is binnen de module; verder is niet nodig). Vervolgens een functie die de originele kleur toewijst aan iKleur, en een nieuwe kleur instelt. Ik doe dat met de functie RGB, zodat je makkelijk met het kleurenpakket een kleur kunt uitkiezen en de RGB waarden kunt uitlezen.
De tweede functie doet niks meer dan de originele kleur weer terugzetten.
Hoe gebruik je de 2 functies nu? Heel simpel: elk object (keuzelijst, tekstvak) op een formulier (subformulier; maakt niet uit) zet je de volgende formules bij de aangegeven gebeurtenissen:
<Bij focus>: =FocusKleur()
<Bij focus verloren>: =oriKleur()
En meer is het niet. Nu krijgt elke control die je aanklikt de gewenste achtergrondkleur. Bij verlaten ervan heb je de oorspronkelijke kleur weer terug.