¿Cómo puedo calcular la edad con los datos ingresados en un formulario usando MACROS?

Bien pues tengo en hoja1 el diseño de un formulario para el registro de datos personales (nombre, dirección, delegación, fecha de nacimiento, etc), todo los datos registrados en dicho formulario los pretendo pasar a una tabla que se encuentra en hoja2 a través de MACROS, el problema surge cuando no logro hacer lo correcto para que cuando se copien los datos del formulario en hoja1 y se peguen en sus correspondientes celdas de la tabla en HOJA2 también se pase el calculo de la edad registro tras registro.

He intentado hacer esto.

1.- HOJA1: FORMULARIO-CAMPO "FECHA NACIMIENTO" EN G11, En celda vacía p7 inserto la función =HOY()

2.-Después le doy grabar macro-copio las celdas del formulario de HOJA1 y pego las celdas con desplazamiento hacia abajo en la tabla de HOJA2 según corresponda la columna.

3..-en el formulario HOJA1 tengo un campo que se llama edad, con la macro grabando introduzco esta función =SIFECHA(G11,P7,"y") y después trato de copiarla pero obviamente estoy en herrado.

Como pudo solucionar que a través de cada registro del formulario en hoja 1 se calcule automáticamente registro tras registro la edad y llevarla a hoja 2 ?.

1 Respuesta

Respuesta
1

No entiendo muy bien lo que quieres. ¿Podrías mandarme el libro para aclararme?

Mi dirección es [email protected]

Pon como asunto el título de la pregunta. Y si fuera posible pon este nombre al libro

CalcularEdad.XLSM

Pues creo que ya lo tengo.

He quitado la edad en Hoja1 porque ya no hará falta. He creado la macro Registrar que es la que tienes que asociar al botón de Registrar. Se basa en las que tenías pero bastante simplificada, cuantas menos operaciones innecesarias se hacen más rápido van las macros. Aparte he hecho que no se vean los parpadeos de pantalla. Y dentro de esa macro esta el cálculo de la edad si se introdujo una fecha correcta. Te he dejado las otras macros por si quieres comparar, pero lo mejor es que las borres.

Ahora te mandare el fichero.

Sub Registrar()
 Application.ScreenUpdating = False
 Sheets("Hoja3").Select
 Sheets("Hoja1").Range("G7").Copy
 Range("A2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("G7").Copy
 Range("B2").Insert Shift:=xlDown
 fecha = Sheets("hoja1").Range("G11")
 If IsDate(fecha) Then
     Range("B2") = DateDiff("yyyy", fecha, Date)
 Else
     Range("B2") = ""
 End If
 Sheets("Hoja1").Range("G9").Copy
 Range("C2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("K9").Copy
 Range("D2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("G11").Copy
 Range("E2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("K13").Copy
 Range("F2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("G13").Copy
 Range("G2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("G15").Copy
 Range("H2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("K15").Copy
 Range("I2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("G17").Copy
 Range("J2").Insert Shift:=xlDown
 Sheets("Hoja1").Range("K17").Copy
 Range("K2").Insert Shift:=xlDown
 Range("A2").Select
 Sheets("Hoja1").Select
 Range("G7,G9,G11,G13,G15,G17,K9,K13,K15,K17") = ""
 Range("G7").Select
 Application.CutCopyMode = False
 Application.ScreenUpdating = True
End Sub

Y eso es todo, espero que te sirva y lo hayas entendido. Si tienes alguna duda pregúntame, y si ya está bien no olvides puntuar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas