gpt4 book ai didi

VBA 电源运算符 (^) 在 64 位 VBA 中未按预期工作

转载 作者:行者123 更新时间:2023-12-02 06:48:31 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do I need a space before the '^' operator in VBA for Excel 2013 or it will produce a compile time error "Expected list or separator"

(1 个回答)


3年前关闭。




我觉得问起来很愚蠢,我相信有一个简单的答案。我正在尝试获得以下数字的幂:

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

最佳答案

已确认:也发生在 MS Word 2010、2013、2016 所有 64 位 Office*1

*1 I suspect this applies to most of, if not all, the 64 bit office applications



这似乎是 64 位版本的 MS Office 的问题。在 32 位版本中,插入符号 ^用于幂运算符,但在 64 位运算符中,它也用于 LongLong ( docs.microsoft.com/.../vba/.../longlong-data-type) 类型的变量。

在 64 位 VBA 中,使用 Debug.Print 时*2 IDE 自动更正 2^22^; 2但是 2 ^2自动更正为 2 ^ 2 ;使代码可编译。

作为一种解决方案,这只是 64 位 VBA 用户“只需要知道”的那些烦人的事情之一。

编辑:微软确认问题 https://support.microsoft.com/en-gb/help/2454019/the-64-bit-office-2010-vba-compiler-shows-an-error-when-it-encounters

*2 我还了解到使用 debug.Print 时 VBA 的行为有所不同。而不是分配一个变量(感谢 @ErikvonAsmuth )

关于VBA 电源运算符 (^) 在 64 位 VBA 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51264287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com