我发问很愚蠢,我敢肯定有一个简单的答案。我正在尝试为数字求幂,如下所示:
Sub test()
Dim number As Long
number = 2^8 ' Expect to get 256 here
End Sub
这将产生错误:“预期:列表分隔符或”。
我很惊讶这不起作用。我知道有一个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
答案 0 :(得分:3)
* 1我怀疑这适用于大多数(如果不是全部)64位办公应用程序
这似乎是64位版本的MS Office的问题。在32位版本中,插入号keys
用于幂运算符,但是在64位版本中,它也用于LongLong(docs.microsoft.com/.../vba/.../longlong-data-type)类型的变量。
在64位VBA中,当使用^
* 2时,IDE会自动将Debug.Print
校正为2^2
,但是2^; 2
会自动校正为2 ^2
;使代码可编译。
通过一种解决方案,这只是64位VBA用户“只是需要知道”的烦人的事情之一。
编辑:Microsoft已确认问题https://support.microsoft.com/en-gb/help/2454019/the-64-bit-office-2010-vba-compiler-shows-an-error-when-it-encounters
* 2我还开始了解到,使用2 ^ 2
时,VBA行为不同于分配变量(感谢@ErikvonAsmuth)。
答案 1 :(得分:1)
您可以使用电源功能。例如
Sub Test()
Dim number As Long
number = Application.WorksheetFunction.power(2, 8)
End Sub
但是^运算符也必须也在工作。