Ingresar datos a excel desde un formulario

Esta macro nos facilita el ingreso de datos hacia el Excel de una forma práctica y sencilla, como llevar datos a Excel desde un formulario.

Primero creamos un formulario como se muestra a continuación.


A los cuadros de texto les ponemos los siguientes nombres (Name) en sus respectivas propiedades.

(Name)=txtcliente
(Name)=txtruc

Lo mismo para los botones cambiamos la propiedad (Name).

(Name)=cmdgrabar
(Name)=cmdsalir

El nombre del formulario también es muy importante.

(Name)=frmcliente

No se olviden que desde la propiedad caption podemos poner  el nombre que se va a mostrar al usuario en dicho elemento.

¡Listo!, una vez hecho eso le damos doble clic al botón LLEVAR A EXCEL  para ir a visual basic y comenzar la programación de dicho botón, que es la siguiente.

 Private Sub cmdgrabar_Click()
Sheets("cliente").Select
nr = Application.WorksheetFunction.CountA(Range("a:a"))
If txtcliente = "" Then
    MsgBox "INGRESE CLIENTE"
    txtcliente.SetFocus
    Exit Sub
End If
x = Len(txtruc)
MsgBox x
 If x <> 3 Then
        If Not (IsNumeric(txtruc)) Then
        MsgBox "INGRESE RUC"
        txtruc = ""
        txtruc.SetFocus
        Exit Sub
        Else
        MsgBox "ingrese numero de 3 digitos"
        txtruc = ""
        txtruc.SetFocus
        Exit Sub
    End If
End If

For x = 2 To nr

If Not (IsNumeric(txtruc)) Then
            MsgBox "RUC INCORRECTO"
            txtruc = ""
            txtruc.SetFocus
            Exit Sub
            Else
           If Val(Cells(x, 1)) = Val(txtruc) Then
   
            MsgBox "RUC ya existe"
            txtruc = ""
            txtruc.SetFocus
    Exit Sub
    End If
    End If
Next

Cells(nr + 1, 1) = txtruc
Cells(nr + 1, 2) = txtcliente
txtruc = ""
txtcliente = ""
txtcliente.SetFocus
End Sub

Ahora vamos al Excel y desde la ficha programador vamos a insertar un botón de comando, también añadimos texto como se muestra en la siguiente imagen.


El nombre de la hoja le ponemos cliente, como se muestra en la imagen.



Ahora damos doble clic a nuestro botón Ingresar Datos para ir a visual basic donde programamos lo siguiente.

Private Sub cmdcliente_Click()
frmcliente.Show
End Sub

Como se muestra en la siguiente imagen.


Del código tenemos lo siguiente:

Sheets("cliente").Select, es nuestra hoja donde se ejecutara la macro y donde se ingresaran los datos del formulario.

nr = Application.WorksheetFunction.CountA(Range("A:A")), con este código lo que hacemos es decirle al visual basic que llame una función del excel que en este caso es la función contara, esta función cuenta los datos ingresados en la columna (A:A) y nos dará el número de celdas que están con datos, siempre que llamemos a una función de Excel debemos colocarla en inglés.
y = Len(txtruc), Len cuenta la cantidad de dígitos que se han ingresado en nuestro cuadro de texto y estos son almacenados en la variable “y”.

For x = 2 To nr, aquí tenemos un bucle que inicia en 2 y termina  en al valor que no da nr.

If Val(Cells(x, 1)) = Val(txtruc) Then, esta condicinal lo que hace es comparar los datos de las celdas con el dato de nuestro cuadro de texto para saber si dichos datos ya existen y que no se vuelvan a repetir. 

6 comentarios:

  1. Hola, tengo una inquietud, como puedo poner en un cuadro de texto de un formulario un texto que tengo en una hoja de excel, cual es el código para llamar que ponga lo de la pagina de excel... gracias

    ResponderEliminar
    Respuestas
    1. quieres llamar a la hoja de excel o a una celda en especifico

      Eliminar
  2. hola amigo muy buenas tardes, de antemano lo felicito y doy gracias por su buena explicacion de verdad me has ayudado mucho, ya que he creado por medio de tu curso un control de inventario de entradas y salidas y ya lo tengo avanzado un 98% execto un pequeño problema. me gustaria me enviaras tu correo por favor. muchas gracias.

    ResponderEliminar
  3. Hola Walter Bedregal necesito de su colaboración. Deseo ingresar unos dígitos a una lista de excel ya existente. ¿Cómo lo puedo hacer? mi base de datos tiene más de 2500 clientes. saludos. Irving Castillo

    ResponderEliminar
  4. Hola Walter Bedregal necesito de su colaboración. Deseo ingresar unos dígitos a una lista de excel ya existente. ¿Cómo lo puedo hacer? mi base de datos tiene más de 2500 clientes. saludos. Irving Castillo

    ResponderEliminar