Códigos que se generar correlativos

Os escribo para hacer una, creo que sencilla, consulta: tengo un formulario con un cuadro de texto "Código". Tiene un botón de "Nuevo registro" el formulario. Me gustaría que al pulsar en nuevo registro, el cuadro de texto me generara automáticamente un nuevo código correlativo al último ya guardado en una tabla; es decir, que genere el último código guardado en la tabla +1. Le estoy dando vueltas, pero como mi conocimiento es somero no doy con la tecla. El código es sencillo de 3 caracteres numéricos (va del 0 al 999).

2 respuestas

Respuesta
2

Suponiedo que la tabla a la que haces referencia es una hoja del libro, lo option más rápida sería contar las filas de la columna donde este el identificador.

Para ello imagina que tienes el siguiente formulario:

El campo de texto es txtID y el botón cmdGenerarID.

Cuando cargas el formulario, en el evento Initialize se carga el valor actual en una variable global dNumeroFilas, para conseguir esto lo que hacemos es invocar a la función getRows que requiere como parámetro la referencia a la celda donde esta el nombre de la columna de tu tabla

Option Explicit
'
Const cHojaTabla = "Tabla"
Const cCeldaID = "A1"
Dim dNumeroFilas As Double
Private Sub cmdGenerarID_Click()
    ' Aqui tendras que poner tu codigo
End Sub
Private Sub UserForm_Initialize()
    Dim raTabla As Range
    On Error Resume Next
    Set raTabla = Sheets(cHojaTabla).Range(cCeldaID)
    If Err.Number = 0 Then
        dNumeroFilas = GetRows(raTabla)
    Else
        dNumeroFilas = 0
    End If
    txtID.Text = CStr(dNumeroFilas)
End Sub

La definicion de getRows:

Option Explicit
Public Function GetRows(ByRef Rango As Range) As Double
    Dim dFilas As Double
    Dim sValor As String
    Dim bEnd As Boolean
    Dim shHoja As Worksheet
    dFilas = 0
    Set shHoja = Rango.Parent
    Do
        dFilas = dFilas + 1
        Debug.Print shHoja.Cells(Rango.Row + dFilas, Rango.Column).Value
        If IsEmpty(shHoja.Cells(Rango.Row + dFilas, Rango.Column).Value) = True Then
            bEnd = True
        End If
    Loop Until bEnd = True
    GetRows = dFilas
End Function

Espero que te sirva, la hoja que he usado:

Respuesta
1

Adjunto enlace del archivo excel con el desarrollo de tu consulta para su revisión

Espero que te sirva de ayuda y este acorde a tu necesidad. Cualquier consulta estaré atento.

Por favor, no olvidar de valorar las respuestas, gracias de antemano.

Macro que genera códigos correlativos

Ander GS.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas