2

例如,如果我键入Sqr(a ^ 2 + b ^ 2)没有错误。但是当我输入Sqr(a ^ 2 + b^ 2)它会产生一个我不明白的编译错误:

图片

^VBA7中的功能是什么,而不是_^(下划线显示空间)表示幂?

4

1 回答 1

1

这是一个 64 位的问题。

^ 可能会使编译器混淆是否使用了运算符与操作数值,因为 LongLong 正在使用。

出现此问题的原因是抑扬符 (^) 在此上下文中不明确。对于 64 位版本的 VBA,抑扬符有两种含义:

  1. 它可以指定指数运算,例如 x 的 y 次幂 ("x^y")。
  2. 仅对于 64 位 Office 2010 VBA 版本,它可以指定应将操作数值视为 LongLong、64 位整数值数据类型(例如,“234^”)。

考虑以下场景:

您的计算机上安装了 64 位版本的 Microsoft Office 2010。在 Visual Basic IDE 中,您将创建一个新项目。

在 Visual Basic for Applications (VBA) 代码中,键入类似于以下内容的语句:

LongLongVar2 = LongLongVar1^IntegerVar

当您在 64 位 Office 2010 VBA 版本中键入 x^y 时,VBA IDE 编辑器不知道如何解释字符串的“x^”部分。在这种情况下,“x^”可以被视为 LongLong 数据类型。如果以这种方式解释“x^”,则字符串将产生错误,因为没有为“y”值指定适用于“x”值的运算符。如果在值名称和抑扬符之间使用空格(例如 x ^y)键入字符串,则表明您打算将符号用作运算符而不是数据类型指示符。通过这样做,您可以避免错误情况。因此,示例表达式 ... 应改写如下:

LongLongVar2 = LongLongVar1 ^ IntegerVar

于 2018-07-07T08:59:06.073 回答