J'ai une fonction définie par l'ADN c#
Excel:ref un paramètre macro appelant une fonction ADN excel avec Application.Run
[ExcelFunction(Description = "does stuff", IsVolatile = false, IsMacroType = true, IsThreadSafe = true)]
public object AFunction(long k \* other parameters *\)
{
// do stuff
}
qui est appelé en VBA comme suit:
Dim v As Variant
v = Application.Run("AFunction", k)
maintenant, je modifie mon ADN Excel c#
comme suit:
[ExcelFunction(Description = "Retrieves valo folio", IsVolatile = false, IsMacroType = true, IsThreadSafe = true)]
public object AFunction(ref double x, long k \* other parameters *\)
{
// do stuff
// update x
}
l'idée étant que je vais passer à un double
qui sera mis à jour, et que je vais utiliser après.
Je l'appelle en VBA comme suit:
Dim v As Variant
v = Application.Run("AFunction", x, k)
Mais x
("rationnés" as Double
) n'est pas mis à jour. J'ai essayé un
Dim x() as Double
Redim x(1)
et
Dim v As Variant
v = Application.Run("AFunction", x(1), k)
mais ici aussi x(1)
n'est pas mis à jour.
Y at-il un problème avec le ref
dans le c#
, ou est le problème causé par le?
'Application.Run' ne prend pas en charge les paramètres byref de par leur conception. Il enveloppe les valeurs passées en variantes et les transmet en avant. – GSerg
Vous pouvez mettre ceci dans une réponse pour que je l'accepte. Thx de toute façon. –
Au contraire, 'CallByName' supporte' byref'. Y a-t-il une classe sur laquelle vous pouvez appeler 'CallByName'? – GSerg