Macro: Transformar una matriz en un rango

03/03/2008 - 21:19 por JesusB | Informe spam
Hola a todos,

En un procedimiento (sub) tengo una matriz y quiero llamar a una funcion
(function) que recoge el argumento como rango, y logicamente me da error de
compilacion (el tipo de argumento ByRef no coincide). Me gustaria poder
transformar mi matriz en un rango para poder meterla en la funcion.

Es posible?

Muchas gracias!

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
08/03/2008 - 20:12 | Informe spam
hola, Jesus !

1) es preferible aprovechar las funciones integradas de una hoja de calculo electronica (financieras incluidas)
que definir una funcion "propia" que emule los calculos que la hoja electronica efectua de manera "natural"

2) en el caso recuperaciones de una inversion en pagos con monto constante (pagos iguales)...
la TIR de los flujos siempre sera la tasa con que se ha calculado el monto de pagos (constante)

3) en el caso de pagos diferentes, si los montos de flujo (inversion y pagos) no estaran en celdas en algun rango...
el calculo de la TIR puedes hacerlo sobre "matrices constantes"

prueba el siguiente procedimiento y... si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub TIR_Pagos_Flujo()
Dim Plazo As Integer, Inversion As Double, Monto As Double, _
Tasa As Single, nPer As Byte, Flujo As String
Plazo = Abs(InputBox("Ingresa el numero de pagos"))
Inversion = -Abs(InputBox("Ingresa el monto de la inversion"))
If MsgBox("Es constante el monto de los pagos ?", vbYesNo) = vbNo Then GoTo Variables
Monto = Abs(InputBox("Ingresa el monto de pago constante"))
Tasa = Application.Rate(Plazo, Monto, Inversion)
GoTo InformaTasa
Variables:
Flujo = Inversion
For nPer = 1 To Plazo
Flujo = Flujo & "," & Abs(InputBox("Ingresa el monto de pago para el periodo " & nPer))
Next
Tasa = Evaluate("irr({" & Flujo & "})")
InformaTasa:
MsgBox "La TIR es de " & Format(Tasa, "0.00%")
End Sub

__ la consulta original __
Aqui te mando 2 posibles inputs:
1. 4 a#os
2. Inversion inicial: -4000
3. Flujo a#o 1: 1400
4. Flujo a#o 2: 1300
5. Flujo a#o 3: 1200
6. Flujo a#o 4: 1100
El resultado deberia salir en un InputBox como "La Tir es 10%"

1. 7 a#os
2. Inversion inicial: -8000
3. Flujo a#o 1: 4000
4. Flujo a#o 2: 3000
5. Flujo a#o 3: 1500
6. Flujo a#o 4: 500
7. Flujo a#o 5: 250
8. Flujo a#o 6: 125
9. Flujo a#o 7: 75
El resultado deberia salir en un InputBox como "La Tir es 8,89%"
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida