2011-10-02 18 views
13

पर विचार करें घोषणाओंVBA चर/सरणी मूलभूत मूल्यों

Dim x As Double 
Dim avg(1 To 10) As Double 

x और avg में मूलभूत मूल्यों क्या हैं?

परीक्षण के माध्यम से, मैं कहना चाहता हूं कि x शून्य में प्रारंभ किया गया है। इसी तरह, मैं कहना चाहता हूं कि avg में सभी तत्व शून्य में प्रारंभ किए गए थे।

हालांकि, क्या मैं कोड लिख सकता हूं जो इस पर निर्भर करता है? या डिफ़ॉल्ट प्रारंभिक मान वास्तव में अनिश्चित हैं?

उत्तर

14

यदि आप डेटा प्रकार निर्दिष्ट करते हैं लेकिन प्रारंभकर्ता निर्दिष्ट नहीं करते हैं, तो विजुअल बेसिक चर डेटा को इसके डेटा प्रकार के लिए डिफ़ॉल्ट मान में प्रारंभ करता है, जो सभी संख्यात्मक प्रकार 0 (शून्य) के लिए होता है।

जब आप मैक्रो चलाते हैं, तो सभी चर एक मान के लिए प्रारंभ किए जाते हैं। न्यूमेरिक वैरिएबल शून्य पर प्रारंभ किया गया है, एक चर लंबाई लंबाई स्ट्रिंग शून्य-लंबाई स्ट्रिंग ("") में प्रारंभ की गई है, और एक निश्चित लंबाई स्ट्रिंग ASCII कोड 0 से भरी हुई है। संस्करण चर खाली हो गए हैं। एक खाली चर को शून्य संख्या द्वारा एक संख्यात्मक संदर्भ और स्ट्रिंग संदर्भ में शून्य-लंबाई स्ट्रिंग ("") में दर्शाया जाता है।

Ref

+0

बहुत यकीन है कि यह सही है। नोट, हालांकि, यदि आप गतिशील सरणी का उपयोग करते हैं तो कोई तत्व प्रारंभ नहीं होता है और स्पष्ट रूप से यह सेट करने से पहले एआर (0) को संदर्भित करता है। – dmogle

+1

एक तरफ, मुझे पूरा यकीन है (एसओ खोजकर) कि एक्सेल वीबीए में घोषणा में प्रारंभकर्ता को निर्दिष्ट करना संभव नहीं है, क्योंकि यह एक .NET चीज है। रेफरी के लिए धन्यवाद! यह पूरी तरह से किसी भी संदेह को दूर करता है कि 'x' शून्य है। हालांकि यह मामला है कि एक निश्चित सरणी में प्रत्येक तत्व भी शून्य में शुरू किया गया है? मैं वास्तव में पहले से ही पता चला था कि गतिशील सरणी घोषणा पर प्रारंभिक (केवल आवंटित) नहीं होती है, और मैं बस यह सुनिश्चित करना चाहता था कि निश्चित सरणी घोषणा उसी तरह से व्यवहार न करे। –

+0

@ प्रशांत, क्यों नहीं चर के लिए एक घड़ी जोड़ें और अपने लिए परीक्षण? – Reafidy

1

हां, आप वीबीए में 0 से शुरू होने वाले नंबर प्रकारों पर निर्भर होने में सक्षम होना चाहिए क्योंकि यह उनका डिफ़ॉल्ट मान है।

हालांकि, अगर यह आपको चिंता करता है, और शुरुआती मूल्य बहुत महत्वपूर्ण हैं, तो मेरा अनुमान यह है कि आप उन्हें स्पष्ट रूप से मूल्य 0 असाइन करते हैं (हालांकि आपको वास्तव में आवश्यकता नहीं है)।

4

आप लिखने कोड है कि परोक्ष किसी दिए गए डेटा प्रकार का डिफ़ॉल्ट मान पर निर्भर करता है, लेकिन है कि आप हमेशा चाहिए मतलब हो सकता है नहीं है, क्योंकि यह काफी के रूप में स्पष्ट आप क्या कर रहे है, जो भ्रमित हो सकते हैं अगला व्यक्ति आपका कोड पढ़ रहा है (और वह व्यक्ति अब से एक वर्ष हो सकता है)।

आप अपने चर के लिए प्रारंभिक मूल्य को स्पष्ट रूप से असाइन करने के साथ गलत नहीं जा सकते हैं। , यह एक छोटे से अधिक सरणियों के लिए शामिल है

Dim x As Double: x = 0 
बेशक

, लेकिन आमतौर पर वहाँ उन्हें अपने कोड है, जहां में और नीचे प्रारंभ करने के लिए एक सुविधाजनक जगह है: यदि आप चाहते हैं, आप ऐसा कर सकते घोषणा के रूप में एक ही लाइन पर आप वैसे भी उन्हें पार कर रहे हैं।