Desarrollo de Aplicación Data Entry con VBA en Excel

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,43 KB

Diseño de un programa que permita la entrada de registros desde un formulario de VBA, con la característica de realizar, además, la validación de los campos de dicho registro.

Pasos Operativos

  1. Abrir Excel con un libro en blanco.
  2. Generar una planilla con cuatro columnas.
  3. Al área a ocupar por la tabla asignar el nombre tabladeclientes (seleccionar área, ej: $A$1:$D$3), ir al menú Insertar, Nombre, Definir... y ahí escribir tabladeclientes.
  4. Abrir el Editor de Visual Basic (con ALT + F11).
  5. En el menú Insertar, elegir la opción UserForm (crear un nuevo formulario).
  6. Aparecerá un formulario en blanco. En él colocar cuatro campos (cuadro de textos o Text Boxes) con sus respectivos rótulos (labels), uno para el código, otro para el nombre, otro para el domicilio y otro para el teléfono. Los nombres de los cuadros de textos deben ser: txtcódigo, txtnombre, txtdomicilio, txtteléfono.
  7. Agregar dos botones, uno con el rótulo Insertar y otro con el rótulo Cerrar. Asignar los nombres btninsertar y btncerrar respectivamente.
  8. ¡MUY IMPORTANTE! Agregar un módulo al proyecto. El módulo y su posterior código que se agregará al proyecto en forma de función, cumplirá el objetivo de VALIDACIÓN de la entrada de datos. Para agregar un módulo debemos ir al menú Insertar, Módulo.
  9. En el nuevo módulo escribir el código de la siguiente función:
Function códigoválido()
 Dim hayerror As Boolean
 Dim fila As Object

 hayerror = False
 If Not IsNumeric(UserForm1.txtcódigo.Text) Then
 MsgBox "error: el código debe ser numérico"
 hayerror = True
 Else
 For Each fila In Hoja1.Range("tabladeclientes").Rows
 If IsNumeric(fila.Cells(1, 1)) Then
 If fila.Cells(1, 1).Value = CInt(UserForm1.txtcódigo.Text) Then
 MsgBox "error: código existente"
 hayerror = True
 Exit For
 End If
 End If
 Next
 End If
 códigoválido = Not hayerror
End Function

Esta función verifica, primero, que el código ingresado sea numérico (en caso contrario, despliega un mensaje de error); luego recorre la tabla para ver si el código ingresado ya existía en ella, y en caso afirmativo, también despliega un error.

  1. Realizar un doble clic en el btncerrar. En el evento Clic del botón (Sub btncerrar_Clic) escriba la instrucción End.
  2. Realizar un doble clic en el btninsertar. En el evento Clic del botón (Sub btninsertar_Clic) escriba el siguiente código:
Private Sub btninsertar_Click()
 Dim fila As Object
 If Not códigoválido() Then
 txtcódigo.SelStart = 0
 txtcódigo.SelLength = Len(txtcódigo.Text)
 txtcódigo.SetFocus
 Else
 For Each fila In Hoja1.Range("tabladeclientes").Rows
 If IsEmpty(fila.Cells(1, 1)) Then
 fila.Insert
 fila.Cells(0, 1) = txtcódigo.Text
 fila.Cells(0, 2) = txtnombre.Text
 fila.Cells(0, 3) = txtdomicilio.Text
 fila.Cells(0, 4) = txtteléfono.Text
 txtcódigo.Text = ""
 txtnombre.Text = ""
 txtdomicilio.Text = ""
 txtteléfono.Text = ""
 txtcódigo.SetFocus
 Exit For
 End If
 Next
 End If
End Sub

Estas instrucciones validan, en primer lugar, que el código ingresado sea correcto (a través de una llamada a la función códigoválido, creada en el paso 9. En caso de que no lo sea, devuelven el foco al cuadro de texto txtcódigo. En cambio, si el código es válido, recorren la tabla en busca de la primera celda vacía de la columna Código. En cuanto encuentran una, insertan una fila y colocan, en la fila encontrada, los datos del formulario.

  1. Para finalizar, hacer doble clic en el objeto Este libro (se encuentra en el explorador de proyectos, dentro del grupo Microsoft Excel Objetos). En la ventana de edición que aparece, seleccionar Workbook y el procedimiento correspondiente al evento Open (Sub Workbook_Open). En él, escriba la instrucción UserForm1.show. De este modo, cada vez que abra el archivo, la ventana del formulario se desplegará en forma automática.

Entradas relacionadas: