Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 类型声明字符与声明的数据类型不匹配_Vba - Fatal编程技术网

Vba 类型声明字符与声明的数据类型不匹配

Vba 类型声明字符与声明的数据类型不匹配,vba,Vba,根据下面的代码,我不断地得到这个编译错误,我一辈子也弄不明白。你们能看看问题出在哪里吗?当我返回调试时,它会突出显示“p” 谢谢, R 对于求幂,使用 WorksheetFunction.Power(b, e) 而不是b^e,这在VBA中似乎不起作用 我是说基于测试Debug.print2^2,它返回22Debug.Print WorksheetFunction.Power(2,2)返回4在32位Excel VBA中使用插入符号时,求幂运算的效果与预期的一样。仅在64位Excel VBA中,它

根据下面的代码,我不断地得到这个编译错误,我一辈子也弄不明白。你们能看看问题出在哪里吗?当我返回调试时,它会突出显示“p”

谢谢, R


对于求幂,使用

WorksheetFunction.Power(b, e)
而不是
b^e
,这在VBA中似乎不起作用


我是说基于测试
Debug.print2^2
,它返回
22
Debug.Print WorksheetFunction.Power(2,2)
返回
4

在32位Excel VBA中使用插入符号时,求幂运算的效果与预期的一样。仅在64位Excel VBA中,它无法按预期工作

在64位Excel VBA中,插入符号是LongLong变量类型的类型声明字符。因此,当您输入一个后跟插入符号的数字或一个后跟插入符号的变量名时,VBA假定您所说的是一个LongLong常量或变量。假设完成后,它会尝试解析表达式,并会给您一个运行时错误或意外的结果

如果将常量或变量用括号括起来,如(a)^b或(2)^3,则可以使用插入符号在64位Excel VBA中执行求幂运算。这是我推荐的做法,因为它在32位ExcelVBA中也能正常工作


您可能还注意到,将插入符号加倍似乎可以正确地进行指数运算——但这仅适用于整数。第一个插入符号将整数转换为LongLong,而第二个插入符号执行幂运算。但一般来说,您不能指望这种行为,因为2.3^^3将引发运行时错误(因为2.3不能是长的)。如果您的代码同时在32位和64位Excel中使用,则在32位Excel中加倍插入符号将产生运行时错误。出于这些原因,我建议不要将插入符号加倍。

首先,您是否应该将函数输出类型
函数EuroBin(…)定义为Double
?那么您是否应该处理
T=0
导致在
(u-d)
处被零误差除的情况?你也应该把你所有的变量都调暗。我把所有的变量和函数都声明为Double,它似乎解决了这个问题。谢谢你的建议。我将使用这种语法forward@user2981080我应该告诉你
b^e
在VBA中似乎不太好用!您的代码在出错时突出显示了
p
,这与Python相比非常混乱。我已经学了两天了,今天我知道我必须用paren来表示插入符号的指数,即使如此,我也不能用64位Excel来表示。
WorksheetFunction.Power(b, e)