2008-12-08 23 views
119

उम्मीद है कि एक आसान सवाल है, लेकिन मुझे यह तकनीकी जवाब पसंद है!कीवर्ड सेट वास्तव में वीबीए में क्या करता है?

i = 4 

और

Set i = 4 
VBA में

:

के बीच क्या अंतर है? मुझे पता है कि उत्तरार्द्ध एक त्रुटि फेंक देगा, लेकिन मैं पूरी तरह से समझ में नहीं आता क्यों।

+2

पृष्ठभूमिकर्ता यहां: http://stackoverflow.com/a/9924325/17034 –

उत्तर

79

set किसी ऑब्जेक्ट का संदर्भ निर्दिष्ट करने के लिए उपयोग किया जाता है। सी समतुल्य

int i; 
int* ref_i; 

i = 4; // Assigning a value (in VBA: i = 4) 
ref_i = &i; //assigning a reference (in VBA: set ref_i = i) 
+4

एक वीबी ऑब्जेक्ट संदर्भ एक सी सूचक के समान नहीं है। और वीबी में "और मैं" के बराबर नहीं है। – Tomalak

+7

कोई भी वही नहीं, नहीं। लेकिन अवधारणा को समझने के लिए मेरे लिए काफी करीब है। – Treb

+0

@ टोमालक: आप VarPtr() का उपयोग कर सकते हैं – Atmocreations

8

सेट का उपयोग करने के विरोध में ऑब्जेक्ट संदर्भों को सेट करने के लिए सेट का उपयोग किया जाता है।

62

आपके मामले में, यह एक त्रुटि उत्पन्न करेगा। :-)

Set ऑब्जेक्ट संदर्भ निर्दिष्ट करता है। सभी अन्य कार्य के लिए (, अंतर्निहित वैकल्पिक, और अल्प-प्रयुक्त) Let कथन सही है:

Set object = New SomeObject 
Set object = FunctionReturningAnObjectRef(SomeArgument) 

Let i = 0 
Let i = FunctionReturningAValue(SomeArgument) 

' or, more commonly ' 

i = 0 
i = FunctionReturningAValue(SomeArgument) 
39

से MSDN:

सेट कीवर्ड: VBA में, सेट कीवर्ड आवश्यक है ऑब्जेक्ट की डिफ़ॉल्ट प्रॉपर्टी के ऑब्जेक्ट और असाइनमेंट के असाइनमेंट के बीच अंतर करने के लिए। चूंकि डिफ़ॉल्ट गुण Visual Basic .NET में समर्थित नहीं हैं, सेट कीवर्ड की आवश्यकता नहीं है और अब समर्थित नहीं है।

+0

अच्छी तरह से मिला, लेकिन एमएसडीएन पर मिले आलेख का एक लिंक भी बेहतर होगा :) –

+0

@Neil - यदि आप क्लिक करते हैं तो लिंक वहां है मेरी पोस्ट में एमएसडीएन। – Galwegian

+1

एमएसडीएन की प्रतिलिपि बनाते समय, कम से कम सही लेख। यह वीबीएईटी का जिक्र कर रहा है, वीबीए के लिए नहीं। – Tomalak

1

मेरे सिर के शीर्ष पर, सेट को COM ऑब्जेक्ट को चर के लिए असाइन करने के लिए उपयोग किया जाता है। एक सेट करके मुझे संदेह है कि हुड के तहत यह ऑब्जेक्ट पर अपने जीवनकाल को प्रबंधित करने के लिए ऑब्जेक्ट पर एक ऐडआरफ() कॉल कर रहा है।

+1

यह न केवल COM वस्तुओं के लिए उपयोग किया जाता है, बल्कि सभी वस्तुओं के लिए उपयोग किया जाता है। एसईटी का उपयोग करने का मुख्य कारण गैलिशियन द्वारा समझाया गया है। – Ikke

-1

सेट एक कीवर्ड है और इसका उपयोग वीबीए में किसी ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है।

E.g., * उदाहरण के नीचे दिखाता है कि वीबीए में सेट का उपयोग कैसे करें।

मंद WS वर्कशीट

सेट WS = ActiveWorkbook.Worksheets ("Sheet1") के रूप में

WS.Name = "अमित"

0

तो जब आप एक मूल्य निर्धारित करना चाहते हैं, तो आप डॉन ' टी "सेट" की जरूरत नहीं है; अन्यथा, यदि आप किसी ऑब्जेक्ट का जिक्र कर रहे हैं, उदा। वर्कशीट/रेंज इत्यादि, आपको "सेट" का उपयोग करने की आवश्यकता है।

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