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
- Abrir Excel con un libro en blanco.
- Generar una planilla con cuatro columnas.
- 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í escribirtabladeclientes
. - Abrir el Editor de Visual Basic (con ALT + F11).
- En el menú Insertar, elegir la opción UserForm (crear un nuevo formulario).
- 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
. - Agregar dos botones, uno con el rótulo Insertar y otro con el rótulo Cerrar. Asignar los nombres
btninsertar
ybtncerrar
respectivamente. - ¡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.
- 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.
- Realizar un doble clic en el
btncerrar
. En el evento Clic del botón (Sub btncerrar_Clic
) escriba la instrucciónEnd
. - 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.
- 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ónUserForm1.show
. De este modo, cada vez que abra el archivo, la ventana del formulario se desplegará en forma automática.