Bien, en ese caso, entiendo que no se pueden repetir el código para el mismo año
Se me ocurre que podrías modificar para intentar hacer algo mas simple, la forma en como
Buscas el máximo agregando una condición con un parámetro
=dmax("[Id]","[Nombre de la tabla]")+1,"[año]=xxxx")
Como el año va cambiar y dependiendo del año es el numero que debe generar, lo mejor seria crear una pequeña función de devuelva ese valor de id pasándole del año como un dato (parámetro) mas o menos así
--------------------------------------------------------------------------------------
Private function NumerodeID (valor as integer) as integer
NumerodeID= =dmax("[Id]","[Nombre de la tabla]")+1,"[año]="&valor)
End function
--------------------------------------------------------------------------------------
Acá estoy suponiendo que hay un campo en la tabla que se llama "año" ( donde se almacena el año y el "valor" es el año del cual debo calcular el maximo
Luego para usar la función la llamaríamos así en un cuadro del formulario por ej
= NumeroID(nombredel del cuadro donde esta el año o nombre del campo donde fig año)