** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - XIRR vba
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoXIRR vba

 Responder Responder
Autor
Mensaje
aglarequi Ver desplegable
Nuevo
Nuevo


Unido: 02/Marzo/2021
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Enlace directo a este mensaje Tema: XIRR vba
    Enviado: 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
Arriba
aglarequi Ver desplegable
Nuevo
Nuevo


Unido: 02/Marzo/2021
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Enlace directo a este mensaje 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?
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje 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.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3878
Enlace directo a este mensaje 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
Arriba
aglarequi Ver desplegable
Nuevo
Nuevo


Unido: 02/Marzo/2021
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Enlace directo a este mensaje Enviado: 04/Marzo/2021 a las 12:26
Muchas gracias.Parece que esto con Office16 no funciona.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje 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
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
aglarequi Ver desplegable
Nuevo
Nuevo


Unido: 02/Marzo/2021
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Enlace directo a este mensaje 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable