2011-02-10 13 views
6

Jak już się zorientowałem, jest ich co najmniej sześć: [email protected]#$%&.Jakie są możliwe przyrostki po nazwie zmiennej w VBA?

Oto wycinek:

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

Wyjścia

 
A! - Single 
[email protected] - Currency 
C# - Double 
D$ - String 
E% - Integer 
F& - Long 

Gdzie jest dokumentacja na ten cukier składni?

Jakie są inne możliwe sufiksy?

Czy jest jeden dla daty?

+9

Uciekaj! Uciec! Uciekaj trochę więcej! To okropne, okropne resztki, których nie powinno się używać, kropka. Najbliżej przychodzę, że używam 'Right $',' Left $', 'Mid $' i' Trim $', aby wymusić powrót łańcuchów zamiast wariantu zwracanego przez wersje bez '$', – RolandTumble

+0

@Roland , zgodzili się! Używam ich w jednym celu: http: // stackoverflow.com/questions/3047239/is-there-a-universal-way-to-get-a-nice-textual-of-a-variable-in-vb/3047931 # 3047931 – jtolle

+0

Zgadzam się z Rolandem, ale wciąż +1 na pytanie i termin _syntax sugar_ To jest jak kod, który daje ci pocałunek. (Tak, jestem samotny.) – ray

Odpowiedz

5

Pełna lista (?) Jest tutaj http://support.microsoft.com/kb/110264 w obszarze Przedrostki nazw zmiennych i funkcji. Jak powiedział Remou - nie są one zalecane (artykuł mówi, że używanie jest "zniechęcone"). Wierzę, że pokryłeś je wszystkie na twojej liście. Data jest technicznie wariantem (przechowywany jako zmiennoprzecinkowy), więc nie ma skrótu do tego.

4

Są one już dawno przestarzałe i pozostają tylko dla zgodności wstecznej AFAIK. Zadeklaruj swoje zmienne jako wymagany typ. Możesz także zmusić zmienne do wpisania.

+0

Jest to bardzo przydatne, wiesz :) . Samego IMHO VB jest ogromną kompatybilnością wsteczną i nikt nie powinien pisać na nim programu, jednak w trudnej rzeczywistości jest trochę inaczej. Mam dla mnie jakieś referencje, więc mogę sprawdzić i zdecydować, czy użyć to czy nie? – archimed7592

+5

Piszę codziennie rzeczy w VBA. "Miło byłoby przenieść się do VB.Net, ale nie jest to firma technologiczna i prawdopodobnie nie uaktualnimy jej do nowszej wersji pakietu Office, dopóki nie będziemy musieli tego zrobić. (To naprawdę nie odpowiada na twoje pytanie, po prostu miałem ochotę to powiedzieć). – PowerUser

+2

Można go uzyskać z informacji VB6 http://www.thevbprogrammer.com/Ch02/02-02-DataTypesNamingConv.htm. Zauważ, że nie wszystkie typy są dostępne, co byłoby głównym powodem uniknięcia tego zapisu, niezależnie od jasności. Wszystkie typy danych są dostępne z intellisense i użyciem 'As'. – Fionnuala

3

Te sufiksy to typ wskazówki, a link w zaakceptowanej odpowiedzi jest nieaktualny.

Dim someInteger% '% Equivalent to "As Integer" 
Dim someLong& '& Equivalent to "As Long" 
Dim [email protected] '@ 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 

więc trzeba było je wszystkie, z wyjątkiem ^ dla LongLong, wprowadzony w VBA7 dla 64-bitowych aplikacji hosta. Właśnie dlatego Microsoft wprowadził nową wskazówkę dotyczącą nowego typu wartości.

To bardziej składnia trucizna niż cukier składni choć i pochodzi z powrotem całą drogę od przodków, ówczesnych wersji BASIC przed klauzula As było rzeczą, na przykład w tym Commodore 64 BASIC 2.0 fizzbuzz kodu:

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 

Jak widać, podpowiedzi typu nie są jedynym paleo-kod VBA, który obsługuje: numery linii, Rem komentarze i wyraźne Let Wartość assigments były również rzeczą w 1982 roku ich unikać za wszelką cenę.

W literałów, wolą jawne konwersje ciągu podpowiedzi typu:

Debug.Print TypeName(32&) 'prints Long 
Debug.Print TypeName(CLng(32)) 'prints Long 

Zadaj sobie pytanie, czy nie można , zadawać sobie pytanie, czy powinien. - nieznany

Powiązane problemy