Domanda

Questa dichiarazione provoca un overflow in VBA:

Const OVERFLOWS As Long = 10 * 60 * 60

considerando che l'impostazione del valore direttamente va bene:

Const COMPILES_OK As Long = 36000

Come convinci VBA a trattare numeri interi letterali come long?

Grazie

È stato utile?

Soluzione

Aggiungi il suffisso long & amp; ad almeno un numero:

Const OVERFLOWS As Long = 10& * 60 * 60

Nota che l'uso della funzione CLNG per convertire i valori in long non funzionerà, perché VBA non consente di assegnare il valore restituito di una funzione a una costante.

Altri suggerimenti

http://support.microsoft.com/kb/191713 è un bel riassunto dei caratteri di dichiarazione del tipo disponibili in VBA / VB4-6.

Per coloro che trovano & amp; simbolo un po 'esoterico, un'alternativa è usare la funzione CLNG che converte un numero in lungo

Const OVERFLOWS As Long = CLNG(10) * 60 * 60

potresti quindi fare una cosa simile per una costante singola

Const OVERFLOWS As Single = CSNG(10) * 60 * 60

Il carattere del tipo può anche essere aggiunto ai valori letterali: Const OVERFLOWS As Long = (10 & amp; * 60 * 60) (uno è in realtà sufficiente a causa del modo in cui il motore VBA valuta l'espressione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top