Эти суффиксы являются подсказками типа , а ссылка в принятом ответе устарела.
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
Итак, вы их все, кроме ^
для LongLong
, введеныв VBA7 для 64-битных хост-приложений.Точно, почему Microsoft ввела новую подсказку типа для нового типа значения, я не знаю.
Это больше синтаксический яд , чем синтаксис sugar , хотя и встречается полностьюВернемся к исконным, динозавровским версиям BASIC до появления предложения As
, например, в этом коде fizzbuzz Commodore 64 BASIC 2.0:
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
Спросите себя, не можете ли вы , спросите себя, должны ли вы . - неизвестно