调用DLL,可以正常调用其中的方法,但传入的参数值并未发生预期变化,默认传入参数是按地址传递的不是吗?我在变量前添加byref,提示语法错误。我的写法是:myaddin.jisuan(ByRef a1,ByRef a2)。请问我如何才能让参数在经过jisuan函数运行后得到相应的改变。
你用C++开的ACTIVEX控件,然后用VBA调用的吗?
建议提供更多的问题细节和描述
是的。dll是根据论坛给的mode开发的,dll没问题,函数可以正常调用
传递变量给调用的函数,在函数中进行运算,期待调用结束后变量的值会发生相应的变化。但实际上却没有,猜测是不是传递的参数是按值传递的?那如何才能按引用传递呢?我在参数前加byref 或“&”都被提示语法错误。
运算结果建议通过函数返回传递,不要使用参数传递返回值。
如果你非要用参数返回,参数必须是VARIANT*类型的才可以,这方面的内容已经超出金字塔论坛的客服范畴,建议你去专门的C++的服务社区咨询
[此贴子已经被作者于2019/1/7 16:59:18编辑过]
我函数是这么写的
int jisuan(int v1, int v2,int v3)
{
v1=v2+v3;
v2=v1+v3;
v3=v1+v2;
return v1;
}
在VBA中进行调用,比如
fanhui = xx.jisuan(a1,a2,a3)
打印发现fanhui,a1,a2,a3这几个变量的值都没有改变,都还是原来初始化的值。
进一步搞清楚了问题,说传入参数类型不匹配。这咋整,若在vba中如下定义变量:private a1 as integer,又不能通过。咋整。
在调用函数前使用CInt()强制转换类型,依然结果不对