Excel 64位中的C函数不能用作工作表函数,但在VBA中可以很好地工作

eric.lx

我正在用C编写一个64位Dll,然后在Excel 64位中使用它,并且我正在从https://sites.google.com/site/jrlhost/links/excelcdll跟踪一个示例项目

这个例子很简单。我们在C中编写了一个函数,该函数将返回输入的平方值。该函数在DLL中导出,然后在Excel 64位中使用。

我正面临与示例完全相同的问题:

“但是,当您将squareForEXL用作工作表函数时,会导致错误。在我的桌面上,它会返回正确的结果(例如,“ = squareForEXL(10)”会产生100),但会出现“堆栈空间不足”错误,无论是在调用函数时还是在关闭Excel的某个时候。在我的笔记本电脑上,它返回的结果都不正确(例如,“ = squareForEXL(10)”的结果为0)。在这两种情况下,Excel有时都会崩溃。

C函数(squareForEXL)在VBA中使用时可以正常工作,但不能作为工作表函数使用。本文中提出了一种解决方法,但我仍然想看看是否有任何直接解决此问题的方法。

下面是C和VBA代码:

double _stdcall squareForEXL (double *x)
{
    return *x * *x;
}

Declare PtrSafe Function squareForEXL Lib "C:\Working\XLSquare\x64\Debug\XLSquare.dll" (ByRef x As Double) As Double
唐·沙尼尔(Do​​n Shanil)

您需要传递对示例中给定的squareForExl的引用。那是你需要的

double _stdcall squareForEXL (double &x)
{
    return x * x;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以将工作表用作Excel中的函数吗?

VBA中的Excel工作表函数月份

VBA强制关闭Excel 365但在Excel 2019中可以正常工作

Excel Spreadh工作表中DateDiff的用户定义函数

Excel:从工作表中调用vba函数时,将当前单元格作为参数传递

excel vba 函数返回数组并粘贴到工作表公式中

使用VBA在Excel中删除工作表

Excel VBA每个工作表中的数据

带有集合参数的 Excel vba 百分位工作表函数

Excel函数ARBEITSTAG无法在英文版Excel中工作

Excel工作表中的C#变量

无法使拾色器在Excel 2010 64位中工作

在Excel中删除工作表

从PowerShell函数返回对Excel工作表的引用

Excel INDIRECT函数工作表名称

Excel间接函数来命名工作表

在工作表中巧妙地将自己锁定在Excel的VBA编辑器之外

使用VBA在Excel工作表中创建表

如果显示,则VBA EXCEL范围到Outlook中的IMG可以正常工作,但是如果.Sent不能正常工作

用于比较 Excel 中的多个工作表并在新工作表中按升序显示它们的函数或代码

Excel 2007-在Excel中的另一个函数中引用其他工作表中的值

如何将范围定义为变量以用作 Excel 工作表函数的参数?

使用vba删除其他excel工作簿中excel工作表上的空白行

可以在 Excel VBA 中全局声明工作簿吗?

函数可以单独很好地工作,但不能分配给Tkinter中的按钮

使用VBA是否可以在多个工作表中包含Excel的规划求解参考单元?

使用VBA插入数据透视表可在Excel 2013中工作,但不能在Excel 2010中工作,无需更改代码

Excel用户定义函数可返回所有工作表中相同范围的平均值,但这一工作表

尝试使用 R 在 Excel 工作簿中创建多个工作表,但在几次后收到错误