Property Let और Set के बीच अंतर
VBA में एक क्लास बनाते समय और प्रॉपर्टी (मेंबर वेरिएबल) को संभालते समय, Property मेथड्स Get, Set, Let होते हैं।
आमतौर पर, VBA के अलावा अन्य भाषाओं में, प्रॉपर्टी (मेंबर वेरिएबल) को सेट करने के लिए केवल Getter और Setter होते हैं।
इसलिए, जब आप पहली बार VBA में प्रॉपर्टी की परिभाषा देखते हैं, तो यह अजीब लग सकता है।
इस लेख में, हम VBA के Property Set और Property Let के बीच के अंतर को समझाएंगे।
Property Set और Property Let के बीच अंतर
निष्कर्ष यह है कि,
- वेरिएबल असाइनमेंट के समय Set की आवश्यकता होती है
- अन्यथा Let
यह समझ पर्याप्त है।
व्याख्या
रेफरेंस टाइप वेरिएबल को असाइन करते समय, Set का उपयोग नहीं करने पर त्रुटि होती है।
वर्कशीट के संदर्भ में,
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
यह क्लास में भी लागू होता है।
क्लास की प्रॉपर्टी को सेट करते समय,
' Class1 मॉड्यूल
Private m_ws As Worksheet
' Worksheet क्लास एक रेफरेंस टाइप है, इसलिए Set का उपयोग करें
Public Property Set ws(ByRef received As Worksheet)
' प्रॉपर्टी को सेट करते समय भी Set की आवश्यकता होती है
Set m_ws = received
End Property
' स्टैंडर्ड मॉड्यूल
Dim c1 As Class1
Set c1 = New Class1
' कॉल करते समय भी Set की आवश्यकता होती है
Set c1.ws = ThisWorkbook.Worksheets(1)
यदि एक भी Set नहीं है, तो त्रुटि होगी।
यह थोड़ा जटिल है, लेकिन VBA में वेरिएबल असाइनमेंट के समय Set की अवधारणा प्रॉपर्टी में भी लागू होती है। यह समझ पर्याप्त है।
परीक्षण
' Class1 मॉड्यूल
Private m_ws As Worksheet
Public Property Set ws(ByRef received As Worksheet)
Set m_ws = received
End Property
Public Property Get ws() As Worksheet
Set ws = m_ws
End Property
' स्टैंडर्ड मॉड्यूल
Public Sub test()
Dim c1 As Class1
Set c1 = New Class1
Set c1.ws = ThisWorkbook.Worksheets(1)
Debug.Print c1.ws.Cells(1, 1).Value
End Sub
इमीडिएट विंडो में बुक की पहली शीट की पहली सेल का मान प्रदर्शित होगा।
क्या Let का उपयोग नहीं किया जा सकता?
किया जा सकता है। Let का उपयोग किया जा सकता है।
उपरोक्त कोड का उपयोग करते समय,
' Class1 मॉड्यूल
Private m_ws As Worksheet
' Set को Let में बदलें, अन्य सब कुछ समान रखें
Public Property Let ws(ByRef received As Worksheet)
' प्रॉपर्टी को सेट करते समय Set की आवश्यकता होती है, Let के मामले में भी
Set m_ws = received
End Property
' स्टैंडर्ड मॉड्यूल
Dim c1 As Class1
Set c1 = New Class1
' कॉल करते समय Set की आवश्यकता नहीं होगी
c1.ws = ThisWorkbook.Worksheets(1)
इससे समान परिणाम प्राप्त होंगे।
इसलिए, प्रॉपर्टी (मेंबर वेरिएबल) को सेट करने के लिए केवल Get और Let पर्याप्त हैं।
कुछ अपवाद हो सकते हैं, लेकिन यह स्पष्ट नहीं है कि यह इतना लचीला क्यों है…
अंत में
कुछ लोग सोच सकते हैं कि अब VBA की आवश्यकता नहीं है, लेकिन SaaS युग में Excel का उपयोग करने के तरीके हैं।
उनमें से एक है, VBA से क्लाउड सेवाओं के API का उपयोग।
हमारी वेबसाइट पर कुछ उदाहरण दिए गए हैं, कृपया उन्हें देखें।