这个问题在这里已有答案:
我觉得愚蠢的问题,我确信这是一个简单的答案。我正试图获得一个数字的权力如下:
Sub test()
Dim number As Long
number = 2^8 ' Expect to get 256 here
End Sub
这会产生错误:'Expected:list separator or)'。
我很惊讶这不起作用。我知道有一个Excel定义的电源功能。但是VBA中不支持^运算符 - 它是在VB6中吗?
进一步的信息
如果我在立即窗口中执行相同操作,则会出现以下异常(无错误):
?2^8
2 8
它看起来只是2和8之间的空格。
有用?
所以我正在弄乱各种符号组合,发现在立即窗口中:
?2^^8
256
什么......?谁知道为什么会这样?
更多实验
我猜我的Excel安装必须打破(虽然绝对一切正常)。立即窗口的一些进一步的事情:
如果我在^之前插入一个空格:
?2 ^3
8
?2!^3
8
?2"^3
2 ^3
?2£^3
2 0 3
?2%^3
8
?2@^3
8
?2#^3
8
* 1我怀疑这适用于大多数(如果不是全部)64位办公应用程序
这似乎是64位版本的MS Office的一个问题。在32位版本中,插入符号^
用于幂运算符,但在64位运算符中,它也用于LongLong类型的变量(docs.microsoft.com/.../vba/.../longlong-data-type)。
在64位VBA中,当使用Debug.Print
* 2时,IDE会自动将2^2
更正为2^; 2
,但2 ^2
会自动更正为2 ^ 2
;使代码可编译。
通过解决方案,这只是64位VBA用户“只需要知道”的烦人事情之一。
* 2我也了解到使用debug.Print
时的VBA行为与指定变量不同(感谢@ErikvonAsmuth)
您可以使用电源功能。例如
Sub Test()
Dim number As Long
number = Application.WorksheetFunction.power(2, 8)
End Sub
但^运算符一定也一直在运行。