Macro con solver

27/10/2009 - 08:58 por Bruja | Informe spam
Hola Todos,

Como siempre me dirijo a ustedes porque me ayudan mucho. Estoy haciendo una
macro para sacar un Yiel to maturity y para sacar el yield es necesario usar
solver o recursividad, pero obvio prefiero solver. La cosa es que la macro es
un Public FUnc para usarlo como función cuando quiera, pero mi código sé que
está mal, pero no sé en que...alguien me puede ayudar, me mega urge.
Lo que trato de hacer es yo poner en la hojan de excel +YTM() con los
parámetros y que esto me regrese el valor del Yield Maturity y si se puede
tmb en otra celda el current yield...Les pongo el código que he hecho, espero
me puedan ayudar. Grax

La Bruja May

Public Function YTM(VN As Double, TC As Double, PDado As Double, Vencimiento
As Double, Frecuencia As Double)
Dim PrecioSol, TCP, CP, CA, CY, YTMPCorre

'Cálculo de cupones
TCP = TC / Frecuencia
CP = TCP * VN
CA = VN * T

'Cálculo de Current Yield
CY = CA / P
Worksheets("Yields").Cells(9, "d") = CY


' Macro para usar Solver
'
' Para poder usar esta macro, debe establecer una referencia a Solver:
' Cuando esté activado un módulo de Visual Basic, haga clic en
Referencias,
' del menú Herramientas, y active 'SOLVER'
' Si 'SOLVER' no aparece en la lista, haga clic en Examinar y abra
'Solver.xla'
' En mi PC 'Solver.xla' se encuantra en:
' C:\Archivos de programa\Microsoft Office\OFFICE11\Macros\SOLVER

Worksheets("Yields").Activate
SOLVER.SolvReset
SOLVER.SolvOk SetCell:="$E$16", MaxMinVal:=3, ValueOf:="0",
ByChange:="$D$16"
SOLVER.SolvSolve UserFinish:=True

SOLVER.SolverFinish keepfinal:=1

YTM = "$D$16" * Frecuencia

End Function

Preguntas similare

Leer las respuestas

#1 Juan M
27/10/2009 - 10:25 | Informe spam
"Bruja" escribió
Hola Todos,

Como siempre me dirijo a ustedes porque me ayudan mucho. Estoy haciendo
una
macro para sacar un Yiel to maturity y para sacar el yield es necesario
usar
solver o recursividad, pero obvio prefiero solver. La cosa es que la macro
es
un Public FUnc para usarlo como función cuando quiera, pero mi código sé
que
está mal, pero no sé en que...alguien me puede ayudar, me mega urge.
Lo que trato de hacer es yo poner en la hojan de excel +YTM() con los
parámetros y que esto me regrese el valor del Yield Maturity y si se puede
tmb en otra celda el current yield...Les pongo el código que he hecho,
espero
me puedan ayudar. Grax

La Bruja May

Public Function YTM(VN As Double, TC As Double, PDado As Double,
Vencimiento
As Double, Frecuencia As Double)
Dim PrecioSol, TCP, CP, CA, CY, YTMPCorre

'Cálculo de cupones
TCP = TC / Frecuencia
CP = TCP * VN
CA = VN * T

'Cálculo de Current Yield
CY = CA / P
Worksheets("Yields").Cells(9, "d") = CY


' Macro para usar Solver
'
' Para poder usar esta macro, debe establecer una referencia a Solver:
' Cuando esté activado un módulo de Visual Basic, haga clic en
Referencias,
' del menú Herramientas, y active 'SOLVER'
' Si 'SOLVER' no aparece en la lista, haga clic en Examinar y abra
'Solver.xla'
' En mi PC 'Solver.xla' se encuantra en:
' C:\Archivos de programa\Microsoft Office\OFFICE11\Macros\SOLVER

Worksheets("Yields").Activate
SOLVER.SolvReset
SOLVER.SolvOk SetCell:="$E$16", MaxMinVal:=3, ValueOf:="0",
ByChange:="$D$16"
SOLVER.SolvSolve UserFinish:=True

SOLVER.SolverFinish keepfinal:=1

YTM = "$D$16" * Frecuencia

End Function




Hola,

Y que es lo que hace esa funcion? en que consiste el calculo?
Puedes dar los parametros que necesita la funcion y que valor se espera en
un par de ejemplos?
Si sabes que el codigo que has expuesto esta mal, es por el resultado o por
errores de sintaxis?

Un saludo,
Juan
Respuesta Responder a este mensaje
#2 Héctor Miguel
28/10/2009 - 07:14 | Informe spam
hola (...), ?????

Estoy haciendo una macro para sacar un Yiel to maturity y para sacar el yield es necesario usar solver o recursividad, pero obvio prefiero solver
La cosa es que la macro es un Public FUnc para usarlo como funcion cuando quiera, pero mi codigo se que esta mal, pero no se en que
...alguien me puede ayudar, me mega urge...
Lo que trato de hacer es yo poner en la hojan de excel +YTM() con los parametros y que esto me regrese el valor del Yield Maturity
y si se puede tmb en otra celda el current yield...Les pongo el codigo que he hecho, espero me puedan ayudar. Grax



1) observa que las instrucciones que has copiado/mezclado/... en el codigo que expones mencionan un procedimiento MACRO (o sea...)
2) no creo que puedas usar en un procedimiento "Function" ninguna instruccion que hace "Select(iones)" o "Activate(iones)" de objetos
3) tampoco les esta permitido a los procedimientos function "afectar" celdas diferentes de aquella donde se usa la funcion (de hoja de calculo)
4) prueba a cambiarlo por un procedimiento Sub en vez de Function, PERO... tendras que llamarlo/ejecutarlo como una macro "normal"
5) tambien podrias buscar con que (combinacion de) funciones integradas logras el resultado que estas buscando (???)

saludos,
hector.

__ el resto de la consulta __
Public Function YTM(VN As Double, TC As Double, PDado As Double, Vencimiento As Double, Frecuencia As Double)
Dim PrecioSol, TCP, CP, CA, CY, YTMPCorre
'Calculo de cupones
TCP = TC / Frecuencia
CP = TCP * VN
CA = VN * T
'Calculo de Current Yield
CY = CA / P
Worksheets("Yields").Cells(9, "d") = CY
' Macro para usar Solver
' Para poder usar esta macro, debe establecer una referencia a Solver:
' Cuando esta activado un modulo de Visual Basic, haga clic en Referencias,
' del menu Herramientas, y active 'SOLVER'
' Si 'SOLVER' no aparece en la lista, haga clic en Examinar y abra 'Solver.xla'
' En mi PC 'Solver.xla' se encuantra en:
' C:\Archivos de programa\Microsoft Office\OFFICE11\Macros\SOLVER
Worksheets("Yields").Activate
SOLVER.SolvReset
SOLVER.SolvOk SetCell:="$E$16", MaxMinVal:=3, ValueOf:="0", ByChange:="$D$16"
SOLVER.SolvSolve UserFinish:=True
SOLVER.SolverFinish keepfinal:=1
YTM = "$D$16" * Frecuencia
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida