Überlauf bei der Berechnung eines const in VBA
Frage
Diese Deklaration verursacht einen Überlauf in VBA:
Const OVERFLOWS As Long = 10 * 60 * 60
, während der Wert Einstellung direkt in Ordnung ist:
Const COMPILES_OK As Long = 36000
Wie überzeugen Sie VBA wörtliche ganze Zahlen als Long-Positionen zu behandeln?
Danke
Lösung
Fügen Sie den long
Suffix &
auf mindestens eine Zahl:
Const OVERFLOWS As Long = 10& * 60 * 60
Beachten Sie, dass die CLNG
Funktion mit den Werten konvertieren wird nicht funktionieren long
, weil VBA nicht den Rückgabewert einer Funktion auf eine konstante Zuordnung erlaubt.
Andere Tipps
http://support.microsoft.com/kb/191713 ist eine schöne Zusammenfassung der Typdeklaration Zeichen in VBA / VB4-6.
Für diejenigen, die das & Symbol ein bisschen esoterisch, eine Alternative zu finden, ist die CLNG Funktion zu verwenden, die eine Nummer zu lang wandelt
Const OVERFLOWS As Long = CLNG(10) * 60 * 60
Sie könnten dann eine ähnliche Sache für eine einzelne Konstante tun
Const OVERFLOWS As Single = CSNG(10) * 60 * 60
Der Typ Charakter kann auch auf Literale angehängt werden (Man ist suffucient tatsächlich wegen der Art und Weise des VBA-Engine wertet den Ausdruck).