2008-11-04 13 views
10

Ta deklaracja powoduje przepełnienia w VBA:przelewowy przy obliczaniu const w VBA

Const OVERFLOWS As Long = 10 * 60 * 60 

natomiast ustawienie wartości bezpośrednio jest w porządku:

Const COMPILES_OK As Long = 36000 

Jak przekonać VBA w leczeniu dosłownych całkowitymi jak spodnie długie?

Dzięki

Odpowiedz

14

Dodaj long przyrostek & co najmniej jeden numer:

Const OVERFLOWS As Long = 10& * 60 * 60 

Należy pamiętać, że przy użyciu funkcji CLNG konwertować wartości do long nie będzie działać, ponieważ VBA nie pozwala na przypisanie zwraca wartość funkcji do stałej.

+0

Dzięki. Nigdy wcześniej nie musiałem tego używać. Żyjesz i uczysz się .. –

+0

Hmm, to jest coś nowego, czego się nauczyłem –

+0

Powodem problemu jest to, że domyślny typ numeru w Access jest liczbą całkowitą. Uważam, że znaki deklaracji typu są mniej używane, a Clng itp., Jak sugeruje dbb, jest preferowane. – Fionnuala

3

Postać typu mogą być również dołączane do literałów: Const przelewa As Long = (10 & * 60 * 60) (jeden jest suffucient faktycznie ze względu na sposób silnik VBA oblicza wyrażenie).

4

Dla tych, którzy uważają, że & symbol nieco ezoteryczne, alternatywą jest skorzystanie z funkcji CLng który konwertuje liczbę na długi

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

można wtedy zrobić coś podobnego dla utworzenia jednolitego stałej

Const OVERFLOWS As Single = CSNG(10) * 60 * 60 
Powiązane problemy