Como enunciar mi formula fx desde vba

cordial saludo ! He creado una fx que utiliza una matriz o rango para datos y no logro calcularla desde un form . Aclaro que los datos están en excel y desde allí funciona perfecto .

pero he creado un form y quiero hallar el calculo dese allí con los datos de una hoja y la tasa de interés captarla desde un Textbox. La formula es la siguiente:

Function PayBack(TASA As Double, DATOS)
NC = DATOS.Columns.Count
NR = DATOS.Rows.Count
If NC > 1 Then
For x = 1 To NC
Acumulado = (DATOS(1, x) * ((1 + TASA) ^ -x)) + Acumulado
If Acumulado >= 0 Then
PayBack = (x - 1) - (Acumulado / DATOS(1, x))
Exit For
End If
Next
Else
For x = 1 To NR
Acumulado = (DATOS(x, 1) * ((1 + TASA) ^ -x)) + Acumulado
If Acumulado >= 0 Then
PayBack = (x - 1) - (Acumulado / DATOS(x, 1))
Exit For
End If
Next
End If
End Function

mil gracias

1 Respuesta

Respuesta
1

Puedes poner los datos con los que estas probando

Saludos. Dam

Mil gracias por contestar ! pero no se si me exprese bien. Mi duda es la siguiente como inserto la función FX VNA valor presente neto en ingles NPV,en una celda desde un formulario en el capturo la tasa de interés y el rango desde la hoja. a CONTINUACIÓN RELACIONO LO QUE ESTOY HACIENDO:

Sub CalculoVPNTxBox()
Range("D8").Select
CeldaInc = ActiveCell.Address
Selection.End(xlDown).Select
CeldaFin = ActiveCell.Address
TasaDesc = UserForm2.TextBox1.Value / 100
VPNPRUEBA = Application.Evaluate("=NPV(" & CStr(TasaDesc) & "," & CeldaInc & ":" & CeldaFin & ")*(1+" & TasaDesc & ")")
Range("D14") = VPNPRUEBA
End Sub

Me da error en la tasa .

mil gracias.

Le hice un ajuste a la fórmula que tenías, queda así

Acumulado = Acumulado + (Cells(x, 1) / ((1 + TASA) ^ x))

La probé en la siguiente macro y en el valor acumulado obtengo el VNA.
Lo que no entendí en tu macro, para qué es la fórmula
PayBack = (x - 1) - (Acumulado / DATOS(x, 1))
Prueba con la fórmula que te estoy enviando y si tienes dudas las revisamos con todo gusto.

Private Sub CommandButton1_Click()
Acumulado = 0
Dim datos As Range
Set datos = Range("A1:A3")
NR = datos.Rows.Count
'NR = Range("a3:A5").Rows.Count
TASA = UserForm1.TextBox1.Value / 100
For x = 1 To NR
    Acumulado = Acumulado + (Cells(x, 1) / ((1 + TASA) ^ x))
    'If Acumulado >= 0 Then
    '    PayBack = (x - 1) - (Acumulado / DATOS(x, 1))
    '    Exit For
    'End If
    MsgBox Acumulado
Next
End Sub

Saludos.Dam

CORDIAL SALUDO ! EXPERTO.

Muchas gracias por tu oportuna y pronta respuesta. la verdad no se me había ocurrido crear mi propia formula VPN fx de esa manera. Abusando de tu altruismo quisiera saber si fuese posible utilizar un rango variable de datos para el calculo de una formula fx nativa que utilice variables tipo array o matricial en la formula, por ej con un control RefEdit el cual capture un rango determinado de datos en una hoja de excel y sobre ese rango calcular la formula.

MIL gracias!

P.D La riqueza en un futuro no muy lejano estará dada por el conocimiento !

Puedes consultar el siguiente link sobre la utilización del RefEdti

http://support.microsoft.com/kb/213776/es

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas