正如我已经弄清楚的,至少有六个:!@#$%&
.
这是片段:
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)
Outputs
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
所以你拥有了所有这些,除了^
for LongLong
,在 VBA7 中针对 64 位主机应用程序引入。不过,我不明白微软为何要为新值类型引入新类型提示。
这是更多语法毒药 than 语法糖不过,它的历史可以追溯到 BASIC 之前的恐龙版本。As
子句是一个东西,例如在这个 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
如您所见,类型提示并不是 VBA 支持的唯一古代码:行号、Rem
评论,并明确Let
价值分配在 1982 年也是一个现象。不惜一切代价避免它们。
在文字中,更喜欢显式转换而不是类型提示:
Debug.Print TypeName(32&) 'prints Long
Debug.Print TypeName(CLng(32)) 'prints Long
不要问自己是否can,问问自己是否should.-- 未知
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)