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.

Añade tu respuesta

Haz clic para o