正如我已经想到的那样,至少有六个:!@#$%&
.
这是剪辑:
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
关于这种语法糖的文档在哪里?
还有哪些其他可能的后缀?
有一个日期?
这些后缀是类型提示,并且接受的答案中的链接已过时.
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)
问自己是否可以,问自己是否应该. - 未知
完整的(?)列表位于http://support.microsoft.com/kb/110264的变量和函数名称前缀下。正如 Remou 所说 - 不推荐使用它们(文章称“不鼓励”使用)。我相信您的清单中已涵盖了所有这些内容。从技术上讲,日期是一种变体(存储为浮点),因此没有快捷方式。