Como referenciar una función a los valores de una celda
Tengo una función que me da la edad que es la siguiente:
Function Edad(FechaNac As Date)
Dim Años As Integer
Dim Meses As Integer
Dim Dias As Integer
Dim FechaCalculo As Date
FechaCalculo = FechaNac
If FechaNac > Date Then
Edad = "Error. Fecha futura"
Exit Function
End If
Do While DateAdd("YYYY", 1, FechaCalculo) <= Date 'comprobamos los años que ha cumplido
Años = Años + 1
FechaCalculo = DateAdd("YYYY", 1, FechaCalculo) 'añadiendo años a la fecha de nacimiento
Loop
Do While DateAdd("m", 1, FechaCalculo) <= Date 'comprobamos los meses que ha cumplido
Meses = Meses + 1
FechaCalculo = DateAdd("m", 1, FechaCalculo) 'añadiendo meses
Loop
Do While DateAdd("d", 1, FechaCalculo) <= Date 'finalmente comprobamos los dias que ha cumplido
Dias = Dias + 1
FechaCalculo = DateAdd("d", 1, FechaCalculo)
Loop
Edad = Años & " Años, " & Meses & " meses y " & Dias & " dias."
Y tengo un código que me controla los cambios según voy cambiando de celda que es el siguiente
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
vren = ActiveCell.Row
VCOL = ActiveCell.Column
If vren > 1 Then
Select Case VCOL
Case 22
If Cells(vren, 22).Value = "" Then
Cells(vren, 22).Value = Cells(vren, 15).Value / (Cells(vren, 16).Value * Cells(vren, 16).Value) * 10000
End If
Case 26, 28
UserForm1.Show
UserForm1.ListBox1.ListIndex = -1
End Select
End If
End Sub
lo que necesito es crear un case 10
Que al pasar por la columna 10 me tome la fecha de nacimiento de la celda (vren, 9) y me de en la celda vren 10 la edad
Lo logro con la fórmula
=SIFECHA($G107,$H107,"Y")&"AÑOS "&(SIFECHA($G107,$H107,"M")-(SIFECHA($G107,$H107,"Y")*12))&"MESES"
Pero no logro hacerlo en VBA por que al poner esa misma fórmula y ser mayor el mes de nacimiento me llega a salir edades como 59-2mese
O 23años-4meses a los 22 años 8 meses.