Se uma dica é benvinda ai vai...
Por que não usar o ADO?
Essa função e meramente ilustrativa para ajudar em um eventual codigo automatico.
Set rsAutoNum = New ADODB.Recordset
Dim sqlAutoNum As String
sqlAutoNum = "SELECT MAX(Codigo) as MaxReg From Clientes"
rsAutoNum.Open sqlAutoNum, Sua Conexao, adOpenDynamic, adLockOptimistic, adCmdText
If Not IsNull(rsAutoNum!MaxReg) Then
AutoNum = rsAutoNum!MaxReg + 1
Else
AutoNum = 1
End If
Outro exemplo é:
Public Function AutoNumeracao(Campo As String, Tabela As String) As Long
Dim sql As String, T As New ADODB.Recordset, i As Long
sql = "Select " & Campo & " from " & Tabela & " Order by " & Campo
T.Open sql, SuaConexao, adOpenStatic, adLockOptimistic
Do While Not T.EOF
i = i + 1
If i <> T.Fields(Campo) Then
AutoNumeracao = i
Exit Do
Else
T.MoveNext
End If
Loop
End Function
Obs: Com essa função vc não vai perder nenhum número, ou seja, imagine que vc ja tenha os codigos 1, 2, 3, 4, 5, 6...10
Se vc excluir o codigo 3 por exemplo, na hora de consultar o valor do proximo codigo o a sqle lhe dira que o maximo é 10. Logo 10 + 1 = 11, seu proximo código.
Caso vc queira recuperar a numeração por um erro de entrada de registro e a solução foi excluir o registro de numero 3, com essa função será pesquisado o numero faltante e atribuirá o valor maximo para 3.
Ex: Carrega=AutoNumeracao("Código","Clientes")
Faça uma adaptação a seu gosto!!
Abraços