2008-11-04 11 views
10

में एक स्थिरांक की गणना इस घोषणा VBA में एक अतिप्रवाह कारण बनता है:ओवरफ्लो जब VBA

Const OVERFLOWS As Long = 10 * 60 * 60 

जबकि मूल्य सीधे स्थापित करने ठीक है:

Const COMPILES_OK As Long = 36000 

कैसे आप VBA को मनाने के रूप में शाब्दिक पूर्णांकों के इलाज के लिए है देशांतर?

धन्यवाद

उत्तर

14

जोड़े long प्रत्यय & को कम से कम एक संख्या:

Const OVERFLOWS As Long = 10& * 60 * 60 

ध्यान दें कि CLNG समारोह का उपयोग कर, long के लिए मान परिवर्तित करने के लिए काम नहीं करेगा क्योंकि VBA बताए की अनुमति नहीं है एक समारोह के निरंतर मूल्य वापसी।

+0

धन्यवाद। मुझे पहले कभी इसका इस्तेमाल नहीं करना पड़ा। आप रहते हैं और सीखते हैं .. –

+0

हम्म, यह कुछ नया है जो मैंने सीखा है –

+0

समस्या का कारण यह है कि एक्सेस में डिफ़ॉल्ट संख्या प्रकार पूर्णांक है। मेरा मानना ​​है कि टाइप घोषणा पत्रों का कम उपयोग किया जाता है, और क्लिंग इत्यादि, जैसा कि डीबीबी द्वारा सुझाया गया है, को प्राथमिकता दी जानी चाहिए। – Fionnuala

3

तरह का पात्र भी शाब्दिक के साथ जोड़ दिया जा सकता है: कॉन्स्ट अतिप्रवाह के रूप में लंबे समय = (10 & * 60 * 60) (एक वास्तव में, क्योंकि जिस तरह से VBA इंजन अभिव्यक्ति का मूल्यांकन करता है के suffucient है)।

4

जो लोग & प्रतीक थोड़ा गूढ़ खोजने के लिए, एक वैकल्पिक CLng समारोह जो लंबे समय से

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

के लिए एक नंबर धर्मान्तरित उपयोग करने के लिए आप एक एकल लगातार

के लिए एक समान बात कर सकता है
Const OVERFLOWS As Single = CSNG(10) * 60 * 60