Generar código crédito en excel vba

[Buenas tardes Dante 

En la hoja CRÉDITO de la columna "A", Tengo mi código así.

1-18182700

2-18182700

3-18182700

4-18182700

Quisiera al guardar el siguiente código, busque el código máximo anterior y ponga el siguiente numero correlativo.

Así

5-18182700

...

Intenté con esto pero no funca

 Set h2 = Sheets("CREDITO")
            '
     u = h2.Range("A" & Rows.Count).End(xlUp).Row
     serie = Application.WorksheetFunction.Max(h2.Range("A4:A" & u))
     cod = Split(serie, "-")
     If UBound(cod) = 0 Then
      numcod = cod(0)
      Txtcodcronog = numcod + 1 & "-" & Txtdni
      End If

2 respuestas

Respuesta
1

Te anexo el código actualizado

    Set h2 = Sheets("CREDITO")
    '
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    numeros = Split(h2.Cells(u, "A"), "-")
    Select Case UBound(numeros)
        Case -1:    nuevocod = 1 & "-" & "00000000"
        Case 0:     nuevocod = Val(numeros(0)) + 1 & "-" & "00000000"
        Case 1:     nuevocod = Val(numeros(0)) + 1 & "-" & numeros(1)
    End Select
    Txtcodcronog = nuevocod

sal u dos

[Dante buenos días 

Gracias por la respuesta, para futuras modificaciones tengo esto 

17-1-18182700

17-2-18182700

17-3-18182700

...

El correlativo sería la del centro ¿como haría esto ?

17-4-18182700

17-5-18182700

...

Me dí cuenta que la función SPLIT lo pone en array, no se si es correcto que es así (17,3,18182700).

Con LBound(0) cojo el primer dato del array y  Ubound() el ultimo dato, entonces partiendo de esto no se como hacer el correlativo del centro 

Siempre vas a tener 2 guiones.

Entonces

numeros = split(codigo)

primer dato = numeros(0)

segundo dato = numeros(1)

tercer dato = numeros(2)

sal u dos

Respuesta
1

¿El número a la derecha del guión, no cambiará? O sea, el correlativo realmente solo es el número de la izquierda ¿correcto?

Abraham Valencia

así es 

Prueba algo así:

Dim UbicacionGuion As Integer
Dim Valor As Long, UltimaFilaLlena As Long
Let UltimaFilaLlena = Cells(Rows.Count, 1).End(xlUp).Row
Let UbicacionGuion = InStr(1, Range("A" & UltimaFilaLlena), "-")
Let Valor = Left(Range("A" & UltimaFilaLlena), UbicacionGuion - 1)
Range("A" & UltimaFilaLlena).Offset(1, 0) = Valor + 1 & "18182700"

Cuestión de adaptarlo a tus necesidades. Comentas. Salu2 desde Lima.

Abraham Valencia

¡Gracias! 

De nada, solo una cosa, borré un guión, de forma casual, en esta línea. Debe ser así:

Range("A" & UltimaFilaLlena).Offset(1, 0) = Valor + 1 & "-18182700"

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas