Come ti ho detto se i campi sono nella stessa maschera puoi usare [Me]
MsgBox "Periodo AV: " & DLookup("[PermGrado]", "[1El_Gradi]", "[Grado] = " & Me![Grado])
Ciò detto, questo modo di scrivere è assolutamente ERRATO e SCONVENIENTE perchè la funzione DLOOKUP restituisce un Type VARIANT, che potrebbe anche essere NULL, mentre la funzione MsgBox accetta solo Stringhe, oltretutto NON è Debuggabile in quel modo.
Quando si scrive codice, la contrazione della sintassi la si fa in modo strutturalmente utile non a prescindere.
Nel tuo caso avresti dovuto scrivere così per usare una sintassi utile
Dim vPerm As Variant
vPerm=DLookup("[PermGrado]", "[1El_Gradi]", "[Grado] = " & Me![Grado])
If Len(vPerm & vbNullstring)>0 Then
MsgBox "Periodo AV: " & cstr(vPerm)
Else
MsgBox "Non ho trovato nulla"
End if
In ogni caso nel tuo esempio si evince che il Campo [Grado] sia TESTO e non Numerico, di conseguenza la sintassi esposta è errata in quanto manca un APICE, dal messaggio di errore della stringa.
Quindi il codice corretto diverrebbe:
[code]
Dim vPerm As Variant
vPerm=DLookup("[PermGrado]", "[1El_Gradi]", "[Grado] = '" & Me![Grado] & "'")
If Len(vPerm & vbNullstring)>0 Then
MsgBox "Periodo AV: " & cstr(vPerm)
Else
MsgBox "Non ho trovato nulla"
End if