|
Responder
|
| Autor | |
aglarequi
Nuevo
Unido: 02/Marzo/2021 Localización: Madrid Estado: Sin conexión Puntos: 11 |
Tema: XIRR vbaEnviado: 04/Marzo/2021 a las 09:30 |
|
No hay manera de que funciona esta función. Da un error que no se puede obtener la propiedad XiRR. ¿Alguna sabe decirme porque? Public Function dblXIRR() As Double 'Dim objExcel As Object Dim varImportes(2) As Double Dim varDates(2) As Date Dim datestring(2) As Date Dim result As Double Dim objExcel As New Excel.Application varImportes(0) = 1000 varImportes(1) = -500 varImportes(2) = 1000 varDates(0) = DateSerial(2010, 1, 1) varDates(1) = DateSerial(2010, 6, 1) varDates(2) = DateSerial(2010, 12, 31) datestring(0) = Format(varDates(0), "m/d/yyyy") datestring(1) = Format(varDates(1), "m/d/yyyy") datestring(2) = Format(varDates(2), "m/d/yyyy") 'result = objExcel.WorksheetFunction.Xirr(varImportes, datestring, 0.01) result = Excel.Application.WorksheetFunction.Xirr(varImportes, datestring, 0.01) 'result = Application.Xirr(varImportes, datestring, 0.01) MsgBox dblXIRR, , "XIRR Result" objExcel.Quit Set objExcel = Nothing End Function |
|
![]() |
|
aglarequi
Nuevo
Unido: 02/Marzo/2021 Localización: Madrid Estado: Sin conexión Puntos: 11 |
Enviado: 04/Marzo/2021 a las 10:28 |
|
Se que el problema viene del formato de la fecha. No consigo la manera de que una variable de tipo fecha mantenga formato americano sino que cuando lo pasa a la función lo pasa con formato europeo. ¿Como se puede forzar esto?
|
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 04/Marzo/2021 a las 10:52 |
|
Hola, bienvenido ...
Tienes un batiburrillo considerable de variables, variables no declaradas, .... Veo que lanzas la función con la variable datestring pero la declaración es de aquella manera. La fecha en formato yanqui es un string, así que lo primero que tendrás que hacer es definir la variable que usas como tal ... y empezar a probar. |
|
![]() |
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3878 |
Enviado: 04/Marzo/2021 a las 11:53 |
|
Mira a ver así
... datestring(0) = Format(varDates(0), "m/d/yyyy") datestring(1) = Format(varDates(1), "m/d/yyyy") datestring(2) = Format(varDates(2), "m/d/yyyy") ' Cambio aqui objExcel.Workbooks.Open (objExcel.Application.LibraryPath & "\Analysis\atpvbaen.xla") objExcel.Workbooks("atpvbaen.xla").RunAutoMacros (xlAutoOpen) Result = objExcel.Application.Run("atpvbaen.xla!XIRR", varImportes, datestring) MsgBox Result, , "XIRR Result" ... Un saludo. Luis
|
|
|
El Búho es un pajarraco
|
|
![]() |
|
aglarequi
Nuevo
Unido: 02/Marzo/2021 Localización: Madrid Estado: Sin conexión Puntos: 11 |
Enviado: 04/Marzo/2021 a las 12:26 |
|
Muchas gracias.Parece que esto con Office16 no funciona.
|
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 04/Marzo/2021 a las 12:36 |
|
Yo sigo sin ver la variable datestring ... (no veo que pueda ser problema de la versión de office).
Editado por Mihura - 04/Marzo/2021 a las 12:37 |
|
![]() |
|
aglarequi
Nuevo
Unido: 02/Marzo/2021 Localización: Madrid Estado: Sin conexión Puntos: 11 |
Enviado: 04/Marzo/2021 a las 12:38 |
|
Parece que lo he conseguido. Lo pongo por si a alguno le ocurre. Option Compare Database
Public Function dblXIRR() As Double Dim varImportes(2) As Double Dim varDates(2) As Date Dim datestring(2) As String Dim result As Double Dim objExcel As New Excel.Application varImportes(0) = -1000 varImportes(1) = 500 varImportes(2) = 1000 varDates(0) = DateSerial(2010, 1, 15) varDates(1) = DateSerial(2010, 2, 20) varDates(2) = DateSerial(2010, 3, 1) datestring(0) = Format(varDates(0), "MM/DD/YYYY") datestring(1) = Format(varDates(1), "MM/DD/YYYY") datestring(2) = Format(varDates(2), "MM/DD/YYYY") result = objExcel.WorksheetFunction.Xirr(varImportes, datestring, 0.01) Debug.Print result 'MsgBox result, , "XIRR Result" objExcel.Quit Set objExcel = Nothing End Function |
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |