Por lo general, lo que hacemos es construir en una hoja una tabla (o lista) a la cual iremos agregando datos. También podemos crear una especia de formulario en otra hoja usando controles y también usar validación de datos.
Un ejemplo de este tipo de "aplicación" ya hemos mostrado en la nota Agrupar controles botones de opción en hojas Excel.
Una de las consultas que recibo con cierta frecuencia es: "cómo hago para que al agregar datos a mi base de datos, lo haga en la primer fila libre de la tabla?"
El archivo del ejemplo de la nota mencionada incluye una macro (de hecho dos, una para cada método de crear el formulario) que realiza esa tarea.
La macro es muy sencilla y fácil de adaptar a todo tipo de aplicaciones. Para los lectores sin experiencia en Vba, daremos aquí una explicación de la macro.
Sub clientes_form()
Dim linea_libre As Long
Application.ScreenUpdating = False
Sheets("Clientes").Select
linea_libre = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(linea_libre, 1).Value = Sheets("Formularios").[I2]
Cells(linea_libre, 2).Value = Sheets("Formularios").[I3]
Cells(linea_libre, 3).Value = Sheets("Formularios").[I4]
Sheets("Formularios").Select
Application.ScreenUpdating = True
MsgBox "Se ha agregado el cliente " & Sheets("Formularios").[I2]
End Sub
Empezamos declarando una variable que contendrá el número de la primer fila disponible
Dim linea_libre As Long
Para calcular cuál es la primer fila libre, seleccionamos la hoja Clientes
Sheets("Clientes").Select
y usamos en el código la función CONTARA de Excel para establecer el valor de la variable
linea_libre = WorksheetFunction.CountA(Range("A:A")) + 1
Luego fijamos los valores de las celdas en clientes
Cells(linea_libre, 1).Value = Sheets("Formularios").[I2]
Cells(linea_libre, 2).Value = Sheets("Formularios").[I3]
Cells(linea_libre, 3).Value = Sheets("Formularios").[I4]
y volvemos a la hoja Formulario
Sheets("Formularios").Select
Para evitar que Excel "parpadee" durante la corrida de la macro, usamos la orden Application.ScreenUpdating = False y al final de la macro, antes de la aparición el mensaje, reponemos Application.ScreenUpdating = True.
Esta macro está ligada al botón "Agregar Cliente" en la hoja Formulario.
Technorati Tags: MS Excel