Programando el Botón Registrar y Generando Código (Cli_0001)

Aprende a Programar el Botón Registrar para guardar datos de un formulario y guardarla en una hoja de Excel, validando campos requeridos y generando un nuevo código de cliente basado en el mayor código existente en la columna, incrementado en uno en el formato «Cli_00001».

Generando Código (Cli_0001)

Public Codigo_Cliente
'Generador de Código
Sub Genera_Codigo()
'50 mil es el tamaño de fila del array
Dim miArray(50000) As Long
Dim Numero As Long

i = 5

Do While Cells(i, "B") <> ""

    'Extraemos el número
        Dato = Cells(i, "B")
        Posicion = InStr(Dato, "_")
        der = Len(Dato) - Posicion
        Numero = Right(Dato, der)

miArray(i) = Numero

i = i + 1
Loop

    'Busca al número mas grande del array
  Maximo = WorksheetFunction.Max(miArray) + 1
  
  'MsgBox El número 5 indica los ceros y que no se va pasar de 5 dígitos
  Codigo_Cliente = "Cli_" & String(5 - Len(Maximo), "0") & Maximo
  

  
MsgBox Codigo_Cliente


End Sub

Explicación detallada del código.

Este código busca el número más alto entre los códigos existentes, lo incrementa en uno y genera un nuevo código de cliente en el formato «Cli_00001».

Declaración de Variable Publica

Public Codigo_Cliente

Esta línea declara una variable pública llamada Codigo_Cliente, que se usará para almacenar el nuevo código generado.

Genera_Codigo

Sub Genera_Codigo()

Esta es la definición de la subrutina Genera_Codigo, la cual contiene el código que realiza la generación del nuevo código de cliente.

Declaración de Variables Locales

Dim miArray(50000) As Long
Dim Numero As Long

Se declara un array miArray con un tamaño de 50,000 elementos y una variable Numero de tipo Long.

Inicialización de Variables

i = 5

Se inicializa la variable i en 5, indicando que el proceso de búsqueda de códigos comenzará en la fila 5.

Bucle para Extraer Números de Códigos Existentes

Do While Cells(i, "B") <> ""

    'Extraemos el número
    Dato = Cells(i, "B")
    Posicion = InStr(Dato, "_")
    der = Len(Dato) - Posicion
    Numero = Right(Dato, der)

    miArray(i) = Numero

    i = i + 1
Loop

Este bucle recorre las celdas de la columna B desde la fila 5 en adelante, hasta encontrar una celda vacía. Dentro del bucle:

  • Dato obtiene el valor de la celda actual.
  • Posicion encuentra la posición del carácter «_».
  • der calcula la longitud del número después del carácter «_».
  • Numero extrae el número usando la función Right.
  • Este número se almacena en el array miArray en la posición correspondiente.
  • Incrementa i para moverse a la siguiente fila.

Buscar el Número Máximo en el Array

Maximo = WorksheetFunction.Max(miArray) + 1

Utiliza la función Max de WorksheetFunction para encontrar el número más alto en miArray y le suma 1.

Generar el Nuevo Código de Cliente

Codigo_Cliente = "Cli_" & String(5 - Len(Maximo), "0") & Maximo

Esta línea genera el nuevo código de cliente concatenando:

  • El prefijo «Cli_».
  • Una serie de ceros para asegurarse de que el número tenga siempre 5 dígitos.
  • El número máximo incrementado.

Mostrar el Nuevo Código

MsgBox Codigo_Cliente

Muestra el nuevo código de cliente en un cuadro de mensaje.

Creación de un formulario con botones: Registrar, Modificar, Eliminar, Limpiar y Buscar .

Related Articles

Responses

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  1. Buenas noches Doctor Tio Tech, tengo una duda al programar el botón registrar, el cual tome la opción de cerrar el formulario, sin embargo al volver a generar un nuevo registro me aparece el error » «13» en tiempo de ejecución:
    No coinciden los tipos
    Señalándome la fila del código
    Numero = Right(Dato, der)
    Agradezco de antemano sus tutoriales e información compartida, y estoy pendiente de la aclaración. Muchas gracias por toda la información

  2. Buenas Tardes el tio tech , al momento de darle al boton registrar luego de llenar todos los campos me sale un error «438» en tiempo de ejecución: dice el objeto no admite esta propiedad o método , que atenta a su respuesta saludos

  3. Si tengo 2 códigos diferentes con los que quiero ingresar, ¿Cómo se haría la programación? Para que no me vaya a duplicar
    Ej: Cli_00001
    Emp_00001

El Tío Tech
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.