6 febrero, 2025

GRABAR Y VALIDAR REGISTROS EN UN HOJA EXCEL UTILIZANDO VBA

Hola a todos!.

Después de todos lo post que he subido sobre typescript hoy lo voy hacer con VBA y con un tema bastante fácil y recurrente. Se trata de grabar registros en una hoja Excel utilizando VBA.

Con unas pocas líneas de código conseguiremos nuestro objetivo. Y es que lo que lleva más tiempo es implementar controles para que los datos que se graben sean correctos y fiables, algo que en muchas ocasiones comprobamos que no es así.

Como ejemplo construiré un código que sea capar que grabar el ID, el Nombre y el Apellido de una persona y validar que el ID no esté en blanco y que no se haya grabado antes (que sea único).

Y aquí está:

Pulsando el botón Azul grabaré los datos de las columnas A, B y C con mi Nombre e ID y Pulsando el botón verde, si no pudiese ver la columna A, me mostrará el último registro o ID grabado en la columna y así no repetiré el dato.

El código del Botón Azul es este:

Sub GRABAR()
Dim i As Long, Dupli As Long
    With Sheets("Hoja1")
        'Contamos registros
        i = Application.CountA(.Range("A:A")) + 1
        'Comprobamos si hay duplicados
        Dupli = Application.WorksheetFunction.CountIf(.Range("A1:A" & i), .Range("F3"))
        'Si el ID está vacío notificamos y salimos del proceso
        If .Range("F3") = "" Then
            MsgBox ("EL CAMPO ID NO DEBE ESTAR VACÍO"), vbCritical, "CAMPO ID"
            Exit Sub
        End If
        'Si hay duplicados, notificamos y salimos del proceso
        If Dupli > 0 Then
            MsgBox ("YA EXISTE ID EN BASE DE DATOS"), vbCritical, "ID DUPLICADO"
            Exit Sub
        End If
        'Grabamos datos
        .Cells(i, 1) = .Range("F3")
        .Cells(i, 2) = .Range("G3")
        .Cells(i, 3) = .Range("H3")
        .Cells(i, 4) = .Range("I3")
        .Range("F3:I3").ClearContents
    End With
End Sub

Y el del botón verde es este:

Sub ULTIMOREGISTRO()
    With Sheets("Hoja1")
       Dim i As Long, CHECK As String
        i = Application.CountA(.Range("A:A"))
        'Informamos del último registro grabado
        CHECK = IIf(i = 1, "SIN REGISTROS", .Cells(i, 1))
        MsgBox ("ÚLTIMO ID GRABADO: " & CHECK), vbInformation
    End With
End Sub

Si no hay nada que grabar, el sistema mostrará que es necesario introducir datos y si el ID es repetido también lo indicará. En la siguiente imagen podéis ver como el dato se ha grabado correctamente y depués de pulsar el botón verde se muestra un Msgbox con el último ID.

Y esto es todo, este post va dirigido a una petición que me hizo una lectora de Perú y que lleva poco tiempo trabajando el mundo de VBA. Espero haberte ayudado 🙂

Os dejo el archivo:

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

3 comentarios en «GRABAR Y VALIDAR REGISTROS EN UN HOJA EXCEL UTILIZANDO VBA»

  1. hola, busco ayuda para preparar una formula en excel, o un formato condicional con formula algo complejo. me parece muy interesante tu web, pero yo de programacion nada de nada, tengo una tabla de datos, y necesito que en funcion de unos resultados haya unos marcadores de color. imaginate un proceso de fabricacion, un envase entra en produccion, se llena, sale de producción , se vacia y vuelve a entrar, asi con varios enavases numerados, necesito saber qué envases están fuera, cuales dentro, cuales llenos, cuales vacios, toda la informacion con sus fechas y demas la tengo en filas, pero no consigo dar con qué formula debo usar, ya que el mismo envase entra y sale y tiene varias filas de información con fechas distintas, te agradeceria la ayuda.

  2. Hola, tampoco tengo idea de programar en VBA,
    Si quiero que según el ID introducido se anote en otra hoja? o en la misma hoja y que empieze en la fila 20 y pueda añadir mas campos?
    Gracias .

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies