在VBA宏中使用符号#(哈希)

sri*_*san 44 excel vba excel-vba

#在Excel VBA中使用符号的含义是什么?

它是这样使用的:

 a = b /100#
Run Code Online (Sandbox Code Playgroud)

我不明白的意义#100

Sid*_*out 76

Double的类型声明字符是数字符号(#).也称为HASH

其他类型声明字符是:

  1. 整数 %
  2. 长 &
  3. 货币@
  4. 单身!
  5. 双#
  6. 字符串$

不明白#在这里的意义.

这意味着在计算表达式时,类型声明字符前面的数字被视为特定数据类型而不是Variant.

看这个例子,基本相同.

Sub Sample1()
    Dim a#

    a = 1.2

    Debug.Print a
End Sub

Sub Sample2()
    Dim a As Double

    a = 1.2

    Debug.Print a
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑

让我详细解释一下.

考虑这两个程序

Sub Sample1()
    Dim a As Double, b As Integer

    b = 32767
    a = b * 100

    Debug.Print a
End Sub

Sub Sample2()
    Dim a As Double, b As Integer

    b = 32767
    a = b * 100#

    Debug.Print a
End Sub
Run Code Online (Sandbox Code Playgroud)

问题:其中一个会失败.你能猜出哪一个?

Ans:第一个程序Sub Sample1()将失败.

原因:

Sample2,当你这样做时b * 100#,计算结果将是类型Double.由于它在Double的限制范围内,因此计算成功并将结果分配给变量a.

现在Sample1,当你这样做时b * 100,计算结果将是类型Integer,因为两个操作数都是整数类型.但计算结果超出了整数存储的限制.结果它会出错.

希望能帮助到你 :)

  • @PradeepKumar:是的,这些快捷方式很方便,但我从不喜欢它们:)我一直非常"表达"我的宣言,我猜:P (2认同)
  • +1我没有力量解释所有这些,我会说"不要这样做":-P (2认同)
  • +1很棒的解释,想补充一下,如果在行http://stackoverflow.com/questions/6325486/if-else-end-的开头使用哈希符号,也可以将其用作vba中的预处理器命令如果在VBA中哈希值表示什么意思 (2认同)