VBA中变量名后的可能后缀是什么?

arc*_*592 8 vba

正如我已经想到的那样,至少有六个:!@#$%&.

这是剪辑:

Dim A!, B@, C#, D$, E%, F&
Debug.Print "A! - " & TypeName(A)
Debug.Print "B@ - " & TypeName(B)
Debug.Print "C# - " & TypeName(C)
Debug.Print "D$ - " & TypeName(D)
Debug.Print "E% - " & TypeName(E)
Debug.Print "F& - " & TypeName(F)

输出

A! - Single
B@ - Currency
C# - Double
D$ - String
E% - Integer
F& - Long

关于这种语法糖的文档在哪里?

还有哪些其他可能的后缀?

有一个日期?

Mat*_*don 6

这些后缀是类型提示,并且接受的答案中的链接已过时.

Dim someInteger% '% Equivalent to "As Integer"
Dim someLong&    '& Equivalent to "As Long"
Dim someDecimal@ '@ Equivalent to "As Currency"
Dim someSingle!  '! Equivalent to "As Single"
Dim someDouble#  '# Equivalent to "As Double"
Dim someString$  '$ Equivalent to "As String"

Dim someLongLong^  '^ Equivalent to "As LongLong" in 64-bit VBA hosts
Run Code Online (Sandbox Code Playgroud)

所以,你有他们所有,但^LongLong在VBA7推出了64位主机应用程序.正是为什么微软为新的值类型引入了一个新的类型提示,但我已经超出了它的范围.

它的语法毒性语法糖更多,并且在As子句出现之前就已经从祖先的恐龙版本的BASIC中重新开始,例如在这个Commodore 64 BASIC 2.0 fizzbuzz代码中:

1000 REM INIT VARIABLES
1010 LET FIZZ$ = "FIZZ"
1011 LET BUZZ$ = "BUZZ"
1020 LET FIZZ% = 3
1021 LET BUZZ% = 5
1030 LET MIN% = 1
1031 LET MAX% = 15
1100 PRINT FIZZ$ + ":" + STR$(FIZZ%)
1101 PRINT BUZZ$ + ":" + STR$(BUZZ%)
1102 PRINT FIZZ$ + BUZZ$ + ":" + STR$(FIZZ%*BUZZ%)
1105 PRINT
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,键入提示并不是VBA支持的唯一古代代码:行号,Rem注释和显式Let值分配在1982年也是一件事.不惜一切代价避免使用它们.

在文字中,更喜欢显式转换而不是类型提示:

Debug.Print TypeName(32&) 'prints Long
Debug.Print TypeName(CLng(32)) 'prints Long
Run Code Online (Sandbox Code Playgroud)

问自己是否可以,问自己是否应该. - 未知


kth*_*sis 4

完整的(?)列表位于http://support.microsoft.com/kb/110264的变量和函数名称前缀下。正如 Remou 所说 - 不推荐使用它们(文章称“不鼓励”使用)。我相信您的清单中已涵盖了所有这些内容。从技术上讲,日期是一种变体(存储为浮点),因此没有快捷方式。