खोज…


अर्ली बाइंडिंग बनाम लेट बाइंडिंग

बाइंडिंग एक पहचानकर्ता या चर नाम के लिए एक वस्तु निर्दिष्ट करने की प्रक्रिया है। अर्ली बाइंडिंग (जिसे स्टैटिक बाइंडिंग के रूप में भी जाना जाता है) तब होता है जब एक्सेल में घोषित ऑब्जेक्ट एक विशिष्ट ऑब्जेक्ट प्रकार का होता है, जैसे कि वर्कशीट या वर्कबुक। लेट बाइंडिंग तब होती है जब सामान्य ऑब्जेक्ट एसोसिएशंस बनाए जाते हैं, जैसे ऑब्जेक्ट और वेरिएंट डिक्लेरेशन प्रकार।

देर से बंधन पर कुछ फायदे संदर्भ के प्रारंभिक बंधन।

  • रन-टाइम के दौरान शुरुआती बाइंडिंग देर से बाइंडिंग की तुलना में तेजी से चालू होती है। रन-टाइम में लेट बाइंडिंग के साथ ऑब्जेक्ट का निर्माण करने में समय लगता है जब VBA प्रोजेक्ट शुरू में लोड होता है।
  • अर्ली बाइंडिंग कुंजी / आइटम जोड़े की पहचान के माध्यम से उनकी क्रमिक स्थिति से अतिरिक्त कार्यक्षमता प्रदान करता है।
  • कोड संरचना के आधार पर, शुरुआती बाइंडिंग अतिरिक्त प्रकार की जाँच और त्रुटियों को कम करने की पेशकश कर सकती है।
  • किसी ऑब्जेक्ट के गुण और विधियों को टाइप करते समय VBE का कैपिटलाइज़ेशन सुधार जल्दी बाइंडिंग के साथ सक्रिय है लेकिन देर से बाइंडिंग के साथ अनुपलब्ध है।

ध्यान दें: आपको VBA के उपकरण के माध्यम से VBA प्रोजेक्ट के लिए उपयुक्त संदर्भ जोड़ना होगा → शुरुआती बाइंडिंग को लागू करने के लिए संदर्भ आदेश।
यह पुस्तकालय संदर्भ तब परियोजना के साथ किया जाता है; जब VBA प्रोजेक्ट वितरित किया जाता है और किसी अन्य कंप्यूटर पर चलाया जाता है, तो इसे फिर से संदर्भित नहीं करना पड़ता है।

'Looping through a dictionary that was created with late binding¹
Sub iterateDictionaryLate()
    Dim k As Variant, dict As Object
    
    Set dict = CreateObject("Scripting.Dictionary")
    dict.comparemode = vbTextCompare          'non-case sensitive compare model
    
    'populate the dictionary
    dict.Add Key:="Red", Item:="Balloon"
    dict.Add Key:="Green", Item:="Balloon"
    dict.Add Key:="Blue", Item:="Balloon"
    
    'iterate through the keys
    For Each k In dict.Keys
        Debug.Print k & " - " & dict.Item(k)
    Next k
    
    dict.Remove "blue"      'remove individual key/item pair by key
    dict.RemoveAll          'remove all remaining key/item pairs

End Sub

'Looping through a dictionary that was created with early binding¹
Sub iterateDictionaryEarly()
    Dim d As Long, k As Variant
    Dim dict As New Scripting.Dictionary
    
    dict.CompareMode = vbTextCompare          'non-case sensitive compare model
    
    'populate the dictionary
    dict.Add Key:="Red", Item:="Balloon"
    dict.Add Key:="Green", Item:="Balloon"
    dict.Add Key:="Blue", Item:="Balloon"
    dict.Add Key:="White", Item:="Balloon"
    
    'iterate through the keys
    For Each k In dict.Keys
        Debug.Print k & " - " & dict.Item(k)
    Next k

    'iterate through the keys by the count
    For d = 0 To dict.Count - 1
        Debug.Print dict.Keys(d) & " - " & dict.Items(d)
    Next d
    
    'iterate through the keys by the boundaries of the keys collection
    For d = LBound(dict.Keys) To UBound(dict.Keys)
        Debug.Print dict.Keys(d) & " - " & dict.Items(d)
    Next d
    
    dict.Remove "blue"                         'remove individual key/item pair by key
    dict.Remove dict.Keys(0)                   'remove first key/item by index position
    dict.Remove dict.Keys(UBound(dict.Keys))   'remove last key/item by index position
    dict.RemoveAll                             'remove all remaining key/item pairs

End Sub

हालाँकि, यदि आप जल्दी बाइंडिंग का उपयोग कर रहे हैं और दस्तावेज़ एक सिस्टम पर चलाया जाता है जिसमें आपके द्वारा संदर्भित पुस्तकालयों में से एक का अभाव है, तो आप समस्याओं का सामना करेंगे। न केवल गायब लाइब्रेरी का उपयोग करने वाले रूटीन ठीक से काम नहीं करेंगे, बल्कि दस्तावेज़ के भीतर सभी कोड का व्यवहार अनियमित हो जाएगा। यह संभावना है कि दस्तावेज़ का कोई भी कोड उस कंप्यूटर पर कार्य नहीं करेगा।

यह वह जगह है जहां देर से बाध्यकारी लाभप्रद है। देर से बाध्यकारी का उपयोग करते समय आपको उपकरण> संदर्भ मेनू में संदर्भ नहीं जोड़ना पड़ता है। जिन मशीनों पर उपयुक्त लाइब्रेरी है, वहां कोड अभी भी काम करेगा। उस लाइब्रेरी के बिना मशीनों पर, लाइब्रेरी को संदर्भित करने वाले कमांड काम नहीं करेंगे, लेकिन आपके दस्तावेज़ के अन्य सभी कोड कार्य करते रहेंगे।

यदि आप उस पुस्तकालय से पूरी तरह परिचित नहीं हैं जिसे आप संदर्भित कर रहे हैं, तो कोड लिखते समय शुरुआती बाध्यकारी का उपयोग करना उपयोगी हो सकता है, फिर तैनाती से पहले देर से बाध्यकारी पर स्विच करें। इस तरह आप विकास के दौरान VBE के IntelliSense और Object Browser का लाभ उठा सकते हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow