2011-02-10 14 views
6

Come ho già capito, ce ne sono almeno sei: [email protected]#$%&.Quali sono i suffissi possibili dopo il nome della variabile in VBA?

Ecco snip:

 
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) 

uscite

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

Dov'è documentazione su questo zucchero sintassi?

Quali altri suffissi possibili ci sono?

C'è uno per data?

+9

Scappare! Scappa! Scappa ancora un po '! Questi sono orribili avanzi che non dovrebbero essere usati, punto. Il più vicino che io abbia mai visto è che uso 'Right $', 'Left $',' Mid $' e 'Trim $' per forzare il ritorno delle stringhe piuttosto che la Variant restituita dalle versioni senza' $ ', – RolandTumble

+0

@Roland , d'accordo! Li uso per esattamente uno scopo: http: // StackOverflow.it/questions/3047239/is-there-a-universal-way-to-get-a-nice-testuale-rappresentazione-di-una-variabile-in-vb/3047931 # 3047931 – jtolle

+0

Accetto con Roland, ma ancora +1 per la domanda e il termine _Syntax sugar_ È come un codice che ti dà un bacio. (Sì, sono solo.) – ray

risposta

5

Un elenco completo (?) È qui http://support.microsoft.com/kb/110264 sotto Prefissi di nomi di variabili e funzioni. Come ha detto Remou, non sono raccomandati (l'articolo dice che l'uso è "scoraggiato"). Credo che tu li abbia coperti tutti nella tua lista. Data è tecnicamente una variante (memorizzata come un punto mobile), quindi nessuna scorciatoia per quello.

4

Questi sono obsoleti da tempo e restano solo per compatibilità con le versioni precedenti AFAIK. Dichiarare le variabili come il tipo richiesto. Puoi anche forzare le variabili per digitare.

+0

È piuttosto comodo, lo sai :) . IMHO VB è di per sé un'enorme retrocompatibilità e nessuno dovrebbe mai scrivere un programma su di esso, tuttavia, le cose sono un po 'diverse nella dura realtà.Hai qualsiasi riferimento per me, quindi posso cercarlo e decidere se usare o no? – archimed7592

+5

Scrivo cose ogni giorno in VBA. 'Sarebbe bello trasferirsi su VB.Net, ma questa non è un'azienda tecnologica e probabilmente non aggiorneremo a una versione più recente di Office finché non sarà assolutamente necessario. (Questo in realtà non risponde alla tua domanda. Mi sentivo come a dirlo). – PowerUser

+2

Puoi ottenerlo dalle informazioni VB6 http://www.thevbprogrammer.com/Ch02/02-02-DataTypesNamingConv.htm. Nota che non tutti i tipi sono disponibili, il che sarebbe una delle ragioni principali per evitare questa notazione, a parte la chiarezza. Tutti i tipi di dati sono disponibili con intellisense e l'uso di 'As'. – Fionnuala

3

Questi suffissi sono suggerimenti tipo e il collegamento nella risposta accettata non è aggiornato.

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 

così si doveva a tutti, tranne che per ^LongLong, introdotto nel VBA7 per applicazioni host a 64-bit. Per quale motivo Microsoft abbia introdotto un nuovo suggerimento per un nuovo tipo di valore, tuttavia, è al di là di me.

E 'più sintassi veleno dello zucchero sintassi però, e risale tutta la strada di ritorno da ancestrali, le versioni dai dinosauri di BASIC prima che la clausola di As era una cosa, per esempio in questo codice 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 

Come si può vedere, tipo i suggerimenti non sono l'unica paleo-codice che supporta VBA: numeri di riga, Rem commenti e espliciti Let assigments valore erano anche una cosa nel 1982. li evitare a tutti i costi.

In letterali, preferiscono conversioni esplicite nel corso Tipo suggerimenti:

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

Chiedetevi non è se si può , chiedetevi se si dovrebbe. - sconosciuto

Problemi correlati