2017-05-16 67 views
0

一個excel DNA功能我到Excel DNA限定的c#函數:通過REF傳遞參數給宏調用具有Application.Run

[ExcelFunction(Description = "does stuff", IsVolatile = false, IsMacroType = true, IsThreadSafe = true)] 
public object AFunction(long k \* other parameters *\) 
{ 
    // do stuff 
} 

被稱爲在VBA如下:

Dim v As Variant 
v = Application.Run("AFunction", k) 

現在我修改我的Excel DNA c#如下:

[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 
} 

的想法是我會傳給它一個double,它會被更新,並且我會在之後使用。

我在VBA稱之爲如下:

Dim v As Variant 
v = Application.Run("AFunction", x, k) 

x( 「銀幣」 as Double)沒有更新。我嘗試了

Dim x() as Double 
Redim x(1) 

Dim v As Variant 
v = Application.Run("AFunction", x(1), k) 

但這裏也x(1)沒有更新。

c#中的ref是否存在問題,或者是由Application.Run引起的問題?

+1

'Application.Run'不支持通過設計的byref參數。它將傳入的值包裝成變體並將它們傳遞給前端。 – GSerg

+0

你可以把它放在答案中,以便我接受。無論如何。 –

+0

相反,'CallByName'支持'byref'。有沒有一個類可以調用'CallByName'? – GSerg

回答