2015-05-29 10 views
6

यह आसान होना चाहिए, लेकिन मैं एक स्पष्ट जवाब नहीं मिल सकता।range.value का उपयोग कब करें?

यदि मैं किसी श्रेणी में पढ़ रहा/लिख रहा हूं, तो मैं रेंज नाम का उपयोग कब करूं और कब रेंज.वल्यू का उपयोग करने के लिए इनड करें? क्या इससे कोई फर्क पड़ता है कि रेंज एक सेल या एकाधिक कोशिका है? क्या इससे कोई फर्क पड़ता है कि चर का प्रकार क्या है? या सीमा में डेटा का प्रकार? क्या इसके लिए कोई अच्छा अभ्यास है?

उदाहरण के लिए, मैं

`a = Range("Test")` 

लिख सकते हैं या मैं

`a = Range("Test").value` 
इसी

, लिखना चाहिए चाहिए

`Range("Test") = a` 

या

`Range("Test").value = a` 

उत्तर

7

एक्सेल Range वस्तु में, डिफ़ॉल्ट memberValue

है तो SomeVariable = Range("A1") में ही है के रूप में SomeVariable = Range("A1").Value

इसी Range("A1") = SomeVariable ही Range("A1").Value = SomeVariable रूप

आप निश्चित रूप से करने के लिए है जब आप कहते हैं a = Range("Test")

सावधान रहना है

जब आप किसी भिन्न श्रेणी से वैरिएंट वैरिएबल में मान को स्टोर करने का प्रयास करते हैं उदाहरण के लिए Test रेंज रेफ़ रु कहने के लिए, A1:A10, तो आप मान की एक सरणी मिल जाएगा

Sub Sample() 
    Dim Myar 

    Myar = Range("A1:A10").Value 

    Debug.Print UBound(Myar) 
End Sub 
इस मामले Myar = Range("A1:A10").Value में

फिर के रूप में Myar = Range("A1:A10")

एक ही है, तो मैं पढ़ रहा हूँ/एक श्रृंखला के लिए लेखन, जब करना मैं सिर्फ श्रेणी का नाम उपयोग करता हूं और मुझे range.value का उपयोग करने की आवश्यकता कब होती है?

मुझे यकीन है कि आप when do I just use the range name से क्या मतलब है नहीं कर रहा हूँ, लेकिन यह कोई फर्क नहीं पड़ता अगर आप .Value या नहीं का उपयोग करते हैं आप पढ़ रहे हैं/एक श्रृंखला के लिए/से लेखन। आईएमएचओ, .Value का उपयोग करने के लिए यह एक अच्छा अभ्यास है :)

क्या इससे कोई फर्क पड़ता है कि सीमा एक सेल या एकाधिक कोशिका है?

यदि आप .Value का उपयोग करते हैं या नहीं, तो इस मामले में इससे कोई फर्क नहीं पड़ता।

क्या इससे कोई फर्क पड़ता है कि चर का प्रकार क्या है?

ओह हाँ!

या श्रेणी में डेटा के प्रकार से ऊपर सरणी उदाहरण देखें?

एक्सेल सेल विभिन्न प्रकार के डेटा स्टोर कर सकते हैं। संख्याओं से तारीखों तक तारों तक। चूंकि आप नहीं जानते कि वह प्रकार क्या हो सकता है, यह अनुशंसा की जाती है कि उनके साथ काम करते समय Variant का उपयोग करें।

: यहाँ एक उत्कृष्ट उदाहरण है

मान लीजिए कि सेल A1 इस संख्या 123456789

अब है इस कोड

Sub Sample() 
    Dim someVariable As Integer 

    someVariable = Range("A1").Value 

    Debug.Print someVariable 
End Sub 

और अब यह एक

Sub Sample() 
    Dim someVariable As Variant 

    someVariable = Range("A1").Value 

    Debug.Print someVariable 
End Sub 

संपादित की कोशिश की कोशिश करते हैं

टिम विलियम्स ने उल्लेख किया

का उपयोग .Value भी करने के लिए समस्या "असंतुष्ट ambiguate" आम "जब एक वस्तु चर बताए सेट का उपयोग करने भूल गया" उपयोगी है - मंद एक: सेट एक = रेंज ("A1") बनाम मंद: ए = रेंज ("ए 1") दूसरे मामले में हमेशा उपयोग करते हैं। वैल्यू वास्तविक समस्या को स्पष्ट करता है -

+1

अच्छा एक सिद्धार्थ। मैं स्पष्ट रूप से 'वाल्यू' निर्दिष्ट करना पसंद करता हूं क्योंकि यह शुरुआती कोड को पढ़ने में मदद करता है और पुराने नगेट '। वैल्यू 2' के साथ अंतर करने में मदद करता है (यहां देखें रघु http://stackoverflow.com/questions/17359835/what-is-the-difference -बेटवीन-टेक्स्ट-वैल्यू-एंड-वैल्यू 2) – CuberChase

+1

ग्रेट स्टफ सिद्धार्थ :) उपरोक्त पूरक के लिए, यदि आप सिद्धार्थ की तुलना में मेरे जैसे हैं, तो .value जैसे योग्यता का उपयोग करके, कड़ाई से जरूरी नहीं होने पर भी आपको मदद मिलेगी जब आप टाइप-मिस्चैच त्रुटियां प्राप्त करते हैं तो आप किस डेटा को पकड़ने और समस्या निवारण के लिए ट्रैक करते हैं इसका ट्रैक करें। मैं वही कारण के लिए वेरिएंट के उपयोग से बचना पसंद करता हूं (और कम स्मृति का उपयोग करने के बेहद मामूली लाभ के लिए)। जाहिर है कि यदि आप समय-समय पर इन त्रुटियों को बनाते हैं तो मैं कहूंगा कि सिद्धार्थ की सलाह जाने का तरीका है। – puzzlepiece87

+3

'। वैल्यू' का उपयोग करना आम है "ऑब्जेक्ट वैरिएबल असाइन करते समय सेट का उपयोग करना भूल गया" सामान्य - "मंद करें: एक = रेंज सेट करें (" ए 1 ") 'बनाम' मंद: ए = रेंज ("ए 1") 'दूसरे मामले में हमेशा'। वैल्यू 'का उपयोग वास्तविक समस्या को स्पष्ट करता है –

संबंधित मुद्दे