Hola Ivan muchas gracias por tu aporte un poco con tu idea y un poco con la mia le di forma y ya está aca posteo la solucion !!
A veces hay que despejar la cabeza no? nunca les paso que llega un punto que te bloqueas....
'CON ESTO LO PROBAMOS PONIENDO UN COMMAND1 Y UN LISTBOX EN UN FORM
Private Sub Command1_Click()
For n = 1 To 1000
'lo llama 1000 veces para probar
List1.AddItem ObtenerSERIE
Next
End Sub
'FUNCION PARA DEVOLVER UNA CADENA FORMATEADA CORRELATIVA CON 3 LETRAS Y 3 NUMEROS (AAA000)
Private Function ObtenerSERIE() As String
Dim LETRA(1 To 3), TMPnum
Dim Clave As String
Clave = App.EXEName
'leemos el valor guardado del registro
TMPnum = GetSetting(Clave, "SERIES", "NUMERO", "0")
'
'si es menor que 999
If Val(TMPnum) < 999 Then
SaveSetting Clave, "SERIES", "NUMERO", TMPnum + 1 'incrementar el contador
TMPnum = GetSetting(Clave, "SERIES", "NUMERO", "0") 'leemos nuevamente para actualizarlo
''''
'leemos las 3 letras guardadas por separado en el registro
'el valor "65" (por defecto) es el codigo ASC de la letra A mayuscula
'tambien ya le asignamos a la variable el valor comvertido mediante
' Chr$ a su respectivo valor numerico A=65 hasta la Z=90
LETRA(1) = Chr$(GetSetting(Clave, "SERIES", "LETRA1", "65"))
LETRA(2) = Chr$(GetSetting(Clave, "SERIES", "LETRA2", "65"))
LETRA(3) = Chr(GetSetting(Clave, "SERIES", "LETRA3", "65"))
Else
'cargamos las variables de letras con lo valores del registro
LETRA(1) = GetSetting(Clave, "SERIES", "LETRA1", "65") '1º letra
LETRA(2) = GetSetting(Clave, "SERIES", "LETRA2", "65") '2º letra
LETRA(3) = GetSetting(Clave, "SERIES", "LETRA3", "65") '3º letra
'si el valor es menor que 90 incrementar el contador correspondiente a la letra nº 3
If CInt(LETRA(3)) < 90 Then
LETRA(3) = CInt(LETRA(3)) + 1
SaveSetting Clave, "SERIES", "LETRA3", LETRA(3)
'si el valor es menor que 90 incrementar el contador correspondiente a la letra nº 2
ElseIf CInt(LETRA(2)) < 90 Then
LETRA(2) = CInt(LETRA(2)) + 1
SaveSetting Clave, "SERIES", "LETRA2", LETRA(2)
'si el valor es menor que 90 incrementar el contador correspondiente a la letra nº 1
ElseIf CInt(LETRA(1)) < 90 Then
LETRA(1) = CInt(LETRA(1)) + 1
SaveSetting Clave, "SERIES", "LETRA1", LETRA(1)
End If
LETRA(1) = Chr$(LETRA(1))
LETRA(2) = Chr$(LETRA(2))
LETRA(3) = Chr$(LETRA(3))
'
SaveSetting Clave, "SERIES", "NUMERO", "0"
TMPnum = GetSetting(Clave, "SERIES", "NUMERO", "0")
'
End If
ObtenerSERIE = LETRA(1) & LETRA(2) & LETRA(3) & Right("000" & TMPnum, 3)
End Function
ojalá alguna vez le sirva a alguien!!
Se puede mejorar lo hice que lea del registro pero tal vez sería mejora que leyera los datos de un file oculto por alli