En el código de tu botón pon este código:
Dim vUltimo As Integer
<span class="scayt-misspell" data-scaytid="470" data-scayt_word="Dim">Dim</span> vContador As String
<span class="scayt-misspell" data-scaytid="471" data-scayt_word="Dim">Dim</span> rst As DAO.Recordset
Const miSQL As String = "SELECT Mid([Contador],5,4) AS Expr1 FROM Tabla WHERE ((Left([Contador ],4)=Year(Date()))) ORDER BY Mid([Contador],5,4)"
Set rst = CurrentDb.OpenRecordset(miSQL)
'Si no devuelve registro, inicias el contador
If rst.RecordCount = 0 Then
<span class="scayt-misspell" data-scaytid="473" data-scayt_word="vUltimo">vUltimo</span> = 0
Else
'Si devuelve registros, coges el último
<span class="scayt-misspell" data-scaytid="484" data-scayt_word="rst">rst</span>.MoveLast
<span class="scayt-misspell" data-scaytid="474" data-scayt_word="vUltimo">vUltimo</span> = rst(0)
End If
'Cierras el recordset
<span class="scayt-misspell" data-scaytid="486" data-scayt_word="rst">rst</span>.Close
Set rst = Nothing
'Le añades uno al contador
vUltimo = vUltimo + 1
'Creas el contador
vContador = Year(Date) & Format(vUltimo, "0000") & Format(Month(Date), "00") & Format(Day(Date), "00")
'Lo muestras en el cuadro de texto:
Me.Contador = vContador
Tienes que cambiar lo que está en negrita (Contador y Tabla) por los nombres que tu tengas: Contador por el nombre del campo y Tabla por el nombre de la tabla donde guardas el valor.