我正在尝试使用带有excel和vba的C#。我用VS Express写了一个库dll,一切顺利,因为我只使用Excel中的唯一单元格作为一个或多个参数。然后我在下面几行中使用2 x 2的单元格范围尝试了其他的东西。
public class TryRange
{
public double Sum1(object [,] r1)
{
int col1 = r1.GetLength(0);
int row1 = r1.GetLength(1);
double tmp = 0;
for (int r = 0; r < row1; r++)
{
for (int c = 0; c < col1; c++)
{
tmp = tmp + (double)(r1[r, c]);
}
}
return tmp;
}
}
并在Excel中测试这些行在vba中
Public Function Try1(x As Variant) As Double
' name space in C# is ExcelVbaOne
Dim obj As ExcelVbaOne.TryRange
Dim y As Double
Set obj = New ExcelVbaOne.TryRange
Set y = obj.Sum1(x)
Essai1 = y
End Function
在C#中,我尝试使用Excel.Range r1和MicrosoftOffice.Interop.Excel而不是object [,] r1。我试过y = obj.Sum1(x)......但是vba程序在调用C#Sum1(x)的行中断,或者Excel单元格显示“VALUE!”。 有人可以帮忙吗?