É isso mesmo que eu passei, feito por DAO. Eu gosto de usar dessa maneira sem problemas, mas tambem não vejo problemas em ser assim:
Dim db As DAO.Database, ws As DAO.Workspace, rs As DAO.Recordset, rs2 As DAO.Recordset
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(CurrentProject.Path & "\Backend.accdb", False, False, "MS Access;PWD=senha")
Set rs = db.OpenRecordset("tblClientes", dbOpenDynaset)
Set rs2 = db.OpenRecordset("SELECT Max(Código) FROM tblClientes", dbOpenDynaset)
rs.AddNew
If IsNull(rs2(0)) Then
rs("Código") = 1
Else
rs("Código") = rs2(0).Value + 1
End If
rs("Nome") = Me.txtNome
rs("Sobrenome") = Me.txtSobrenome
rs("dtNascimento") = Me.txtNascimento
rs("Sexo") = Me.txtSexo
rs.Update
rs.Close
Set rs = Nothing
Set db = Nothing
MsgBox "Dados gravados com sucesso" & vbCrLf & rs2(0).Value, vbOKOnly + vbInformation, ""
Uso as duas formas tranquilamente.