Supongo que el correlativo es de cinco cifras, del modo:
A0001, A0002...
B0001, B0002 ...
El código sería:
'Declaramos las variables:
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim rs3 As Recordset
Dim vCorr As Integer
Set db = CurrentDb
'Vemos los tipos de factura que puede haber
Set rs1 = db.OpenRecordset("Select TipoFc from Facturas group by TipoFc")
'Recorremos el recordset:
Do While Not rs1.EOF
'Vemos el máximo para el tipo de factura
Set rs2 = db.OpenRecordset("Select Max(NumeroFc) as MáxNumFc from Facturas where TipoFc='" & rs1!TipoFc & "'")
'Si existe, el correlativo será este máximo más 1, si no existe será 1
If IsNull(rs2!MáxNumFc) = False Then
vCorr = Val(Right(rs2!MáxNumFc, 4)) + 1
Else
vCorr = 1
End If
'Vemos, para actualizarlos, los registros de ese tipo de factura que no tienen número de factura
Set rs3 = db.OpenRecordset("Select NumeroFc from Facturas where NumeroFc is null and TipoFc='" & rs1!TipoFc & "'")
Do While Not rs3.EOF
rs3.Edit
rs3!NumeroFc = rs1!TipoFc & String(4 - Len(Trim(Str(vCorr))), "0") & Trim(Str(vCorr)) rs3.Update
vCorr = vCorr + 1
rs3.MoveNext
Loop
rs1.MoveNext
Loop