VBA中变量名后面可能有哪些后缀?

VBA中变量名后面可能有哪些后缀?,vba,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& - " & Typ

正如我已经发现的,至少有六种:
!@$%&

这里是剪报:

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!,B@,C#,D$,E%,F& 调试。打印“A!-”和TypeName(A) 调试。打印“B@-”和TypeName(B) 调试。打印“C#-”和TypeName(C) 调试。打印“D$-”和TypeName(D) 调试。打印“E%-”和TypeName(E) 调试。打印“F&-”和类型名(F) 输出

A! - Single B@ - Currency C# - Double D$ - String E% - Integer F& - Long A!-单身 B-货币 C#-双倍 D$-字符串 E%-整数 F&长 关于这个语法的文档在哪里

还有什么其他可能的后缀


有一个用于Date的吗?

这些早就被弃用了,并且只保留用于向后兼容AFAIK。将变量声明为所需的类型。您还可以强制变量键入。

变量和函数名前缀下有一个完整的(?)列表。正如Remou所说,不推荐使用(文章称不鼓励使用)。我相信你把它们都列在你的清单上了。从技术上讲,日期是一个变量(存储为浮点),因此该变量没有快捷方式。

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

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
因此,除了在VBA7中为64位主机应用程序引入的用于
LongLong
^
之外,您拥有了所有这些功能。不过,我不明白微软为什么要为新的值类型引入新的类型提示

虽然它比语法糖更像是语法毒药,而且可以追溯到
之前的祖先、恐龙版本的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
正如您所看到的,类型提示并不是VBA支持的唯一古代码:行号、
Rem
注释和显式
Let
值分配也是1982年的事情。不惜一切代价避免它们

在文本中,与类型提示相比,更喜欢显式转换:

Debug.Print TypeName(32&) 'prints Long
Debug.Print TypeName(CLng(32)) 'prints Long
不要问自己是否可以,问问自己是否应该不为人知


这很方便,你知道:)。IMHO VB本身就是一个巨大的向后兼容性,任何人都不应该在上面写程序,然而,在艰难的现实中,情况有点不同。你有什么参考资料给我,让我可以查找它并决定是否使用它吗?我每天都用VBA编写脚本。”twould很高兴迁移到VB.Net,但这不是一家科技公司,我们可能不会升级到更新版本的Office,除非我们万不得已。(这并不能真正回答您的问题。我只是想说出来)。您可以从VB6信息中获得它。请注意,并非所有类型都可用,这是避免使用此符号的一个主要原因,与清晰性无关。所有数据类型都可以通过intellisense和
作为
@PowerUser使用。令人惊讶的是,批评VBA的人经常忘记它对于没有内部It和购买预算的小公司非常有用。VBA比重复的手工工作好得多,也比什么都没有好得多。快跑!逃跑再跑一点!这些是可怕的,可怕的剩菜,不应该使用,句号。最近的一次是,我使用
Right$
Left$
Mid$
Trim$
强制返回字符串,而不是没有
$
的版本返回的变体,@Roland,同意!我使用它们的目的只有一个:同意罗兰的观点,但对于问题和术语语法糖来说,仍然是+1,就像代码给了你一个吻。(是的,我很孤独。)只有6个断开的链接,找不到新的链接。链接页面存档在。