खोज…
वाक्य - विन्यास
- विकल्प विकल्पनाम [मान]
- विकल्प स्पष्ट
- विकल्प तुलना {पाठ | बाइनरी | डेटाबेस}
- विकल्प निजी मॉड्यूल
- विकल्प बेस {0 | 1}
पैरामीटर
विकल्प | विस्तार |
---|---|
मुखर | मॉड्यूल में चर घोषणा की आवश्यकता है जो इसमें निर्दिष्ट है (आदर्श रूप से उन सभी); निर्दिष्ट इस विकल्प के साथ, अघोषित (/ गलत तरीके से) चर का उपयोग करके संकलन त्रुटि हो जाती है। |
पाठ की तुलना करें | मॉड्यूल की स्ट्रिंग तुलना को केस-असंवेदनशील बनाता है, सिस्टम लोकेल पर आधारित होता है, वर्णानुक्रम के समकक्षता को प्राथमिकता देता है (उदाहरण के लिए "a" = "A")। |
बाइनरी की तुलना करें | डिफ़ॉल्ट स्ट्रिंग तुलना मोड। मॉड्यूल की स्ट्रिंग तुलनाओं को संवेदनशील बनाता है, प्रत्येक वर्ण के बाइनरी प्रतिनिधित्व / संख्यात्मक मान (जैसे ASCII) का उपयोग करते हुए तार की तुलना करता है। |
डेटाबेस की तुलना करें | (केवल MS-Access) मॉड्यूल की स्ट्रिंग तुलनाओं को SQL कथन में जिस तरह से काम करता है, बनाता है। |
निजी मॉड्यूल | मॉड्यूल के Public सदस्य को उस प्रोजेक्ट के बाहर से एक्सेस करने से रोकता है, जो मॉड्यूल में रहता है, प्रभावी रूप से होस्ट एप्लिकेशन से प्रक्रिया को छिपाता है (अर्थात मैक्रोज़ या उपयोगकर्ता-परिभाषित फ़ंक्शन के रूप में उपयोग करने के लिए उपलब्ध नहीं है)। |
विकल्प आधार ० | डिफ़ॉल्ट सेटिंग। एक मॉड्यूल में 0 से कम निहित सरणी सेट करता है। जब एक सरणी को स्पष्ट निचली सीमा मूल्य के बिना घोषित किया जाता है, तो 0 का उपयोग किया जाएगा। |
विकल्प बेस 1 | एक मॉड्यूल में 1 से कम अंतर्निहित निहित सरणी सेट करता है। जब एक सरणी एक स्पष्ट निचली सीमा मूल्य के बिना घोषित की जाती है, तो 1 का उपयोग किया जाएगा। |
टिप्पणियों
एक Option Base {0|1}
घोषणा पर कंपाइलर को वापस जाने के बजाय स्पष्ट रूप से सीमाओं की घोषणा करके सरणियों की सीमाओं को नियंत्रित करना बहुत आसान है। इसे इस तरह किया जा सकता है:
Dim myStringsA(0 To 5) As String '// This has 6 elements (0 - 5)
Dim myStringsB(1 To 5) As String '// This has 5 elements (1 - 5)
Dim myStringsC(6 To 9) As String '// This has 3 elements (6 - 9)
विकल्प स्पष्ट
VBA में Option Explicit
उपयोग करना सबसे अच्छा अभ्यास माना जाता है क्योंकि यह डेवलपर को उपयोग से पहले अपने सभी चर घोषित करने के लिए मजबूर करता है। इसके अन्य लाभ भी हैं, जैसे कि घोषित चर नामों और IntelliSense के लिए ऑटो-कैपिटलाइज़ेशन।
Option Explicit
Sub OptionExplicit()
Dim a As Integer
a = 5
b = 10 '// Causes compile error as 'b' is not declared
End Sub
VBE के टूल के भीतर वैरिएबल डिक्लेरेशन की आवश्यकता सेट करना ► विकल्प page संपादक संपत्ति पृष्ठ प्रत्येक नए बनाए गए कोड शीट के शीर्ष पर विकल्प स्पष्ट विवरण डाल देगा।
यह गलत वर्तनी जैसे गलत वर्तनी से बचने के साथ-साथ आपको चर घोषणा में सही चर प्रकार का उपयोग करने के लिए प्रभावित करेगा। (कुछ और उदाहरण ALWAYS Use "Option Explicit" पर दिए गए हैं।)
विकल्प तुलना {बाइनरी | पाठ | डेटाबेस}
विकल्प बाइनरी की तुलना करें
बाइनरी तुलना एक मॉड्यूल / वर्ग मामले के भीतर संवेदनशील के लिए स्ट्रिंग समानता के लिए सभी जांच करता है। तकनीकी रूप से, इस विकल्प के साथ, प्रत्येक वर्ण के द्विआधारी निरूपण के क्रम का उपयोग करके स्ट्रिंग तुलना की जाती है।
ए <बी <ई <जेड <ए <बी <ई <जेड
यदि कोई विकल्प तुलना मॉड्यूल में निर्दिष्ट नहीं है, तो बाइनरी का उपयोग डिफ़ॉल्ट रूप से किया जाता है।
Option Compare Binary
Sub CompareBinary()
Dim foo As String
Dim bar As String
'// Case sensitive
foo = "abc"
bar = "ABC"
Debug.Print (foo = bar) '// Prints "False"
'// Still differentiates accented characters
foo = "ábc"
bar = "abc"
Debug.Print (foo = bar) '// Prints "False"
'// "b" (Chr 98) is greater than "a" (Chr 97)
foo = "a"
bar = "b"
Debug.Print (bar > foo) '// Prints "True"
'// "b" (Chr 98) is NOT greater than "á" (Chr 225)
foo = "á"
bar = "b"
Debug.Print (bar > foo) '// Prints "False"
End Sub
विकल्प पाठ की तुलना करें
विकल्प की तुलना करें पाठ मॉड्यूल / वर्ग के भीतर सभी स्ट्रिंग तुलना को असंवेदनशील तुलना का उपयोग करता है।
(A | a) <(B | b) <(Z | z)
Option Compare Text
Sub CompareText()
Dim foo As String
Dim bar As String
'// Case insensitivity
foo = "abc"
bar = "ABC"
Debug.Print (foo = bar) '// Prints "True"
'// Still differentiates accented characters
foo = "ábc"
bar = "abc"
Debug.Print (foo = bar) '// Prints "False"
'// "b" still comes after "a" or "á"
foo = "á"
bar = "b"
Debug.Print (bar > foo) '// Prints "True"
End Sub
विकल्प तुलना डेटाबेस
विकल्प तुलना डेटाबेस केवल एमएस एक्सेस के भीतर उपलब्ध है। यह पाठ या बाइनरी मोड का उपयोग करने के लिए निर्धारित करने के लिए वर्तमान डेटाबेस सेटिंग्स का उपयोग करने के लिए मॉड्यूल / वर्ग सेट करता है।
नोट: इस सेटिंग का उपयोग तब तक हतोत्साहित किया जाता है जब तक कि मॉड्यूल का उपयोग कस्टम एक्सेस यूडीएफ (उपयोगकर्ता परिभाषित कार्यों) को लिखने के लिए नहीं किया जाता है, जो उस डेटाबेस में एसक्यूएल प्रश्नों के समान पाठ तुलनाओं का इलाज करना चाहिए।
विकल्प बेस {0 | 1}
Option Base
का उपयोग सरणी तत्वों के डिफ़ॉल्ट निचले बाउंड को घोषित करने के लिए किया जाता है। यह मॉड्यूल स्तर पर घोषित किया जाता है और केवल वर्तमान मॉड्यूल के लिए मान्य होता है।
डिफ़ॉल्ट रूप से (और इस प्रकार यदि कोई विकल्प बेस निर्दिष्ट नहीं किया गया है), बेस 0. है जिसका अर्थ है कि मॉड्यूल में घोषित किसी भी सरणी के पहले तत्व में 0 का सूचकांक है।
यदि Option Base 1
निर्दिष्ट किया गया है, तो पहले सरणी तत्व में इंडेक्स 1 है
आधार 0 में उदाहरण:
Option Base 0
Sub BaseZero()
Dim myStrings As Variant
' Create an array out of the Variant, having 3 fruits elements
myStrings = Array("Apple", "Orange", "Peach")
Debug.Print LBound(myStrings) ' This Prints "0"
Debug.Print UBound(myStrings) ' This print "2", because we have 3 elements beginning at 0 -> 0,1,2
For i = 0 To UBound(myStrings)
Debug.Print myStrings(i) ' This will print "Apple", then "Orange", then "Peach"
Next i
End Sub
बेस 1 के साथ एक ही उदाहरण
Option Base 1
Sub BaseOne()
Dim myStrings As Variant
' Create an array out of the Variant, having 3 fruits elements
myStrings = Array("Apple", "Orange", "Peach")
Debug.Print LBound(myStrings) ' This Prints "1"
Debug.Print UBound(myStrings) ' This print "3", because we have 3 elements beginning at 1 -> 1,2,3
For i = 0 To UBound(myStrings)
Debug.Print myStrings(i) ' This triggers an error 9 "Subscript out of range"
Next i
End Sub
दूसरा उदाहरण पहले लूप चरण में सीमा से बाहर (त्रुटि 9) की एक सब्सक्राइब उत्पन्न करता है क्योंकि सरणी के सूचकांक 0 तक पहुंचने का प्रयास किया गया था, और यह सूचकांक मौजूद नहीं है क्योंकि मॉड्यूल Base 1
साथ घोषित किया गया है
आधार 1 के साथ सही कोड है:
For i = 1 To UBound(myStrings)
Debug.Print myStrings(i) ' This will print "Apple", then "Orange", then "Peach"
Next i
यह ध्यान दिया जाना चाहिए कि स्प्लिट फ़ंक्शन हमेशा किसी भी Option Base
सेटिंग की परवाह किए बिना एक शून्य-आधारित तत्व सूचकांक के साथ एक सरणी बनाता है। स्प्लिट फ़ंक्शन का उपयोग कैसे करें के उदाहरण यहां देखे जा सकते हैं
- स्प्लिट फंक्शन
- एक शून्य-आधारित, एक-आयामी सरणी देता है जिसमें निर्दिष्ट संख्या में सबस्ट्रिंग होते हैं।
Excel में, Range.Value
और Range.Formula
एक बहु-कोशिकीय श्रृंखला के लिए गुण हमेशा एक 1-आधारित 2D संस्करण सरणी देता है।
इसी तरह, ADO में, Recordset.GetRows
विधि हमेशा 1-आधारित 2D सरणी देता है।
एक अनुशंसित 'सर्वोत्तम अभ्यास' एक सरणी के extents को निर्धारित करने के लिए हमेशा LBound और UBound फ़ंक्शन का उपयोग करना है।
'for single dimensioned array
Debug.Print LBound(arr) & ":" & UBound(arr)
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
'for two dimensioned array
Debug.Print LBound(arr, 1) & ":" & UBound(arr, 1)
Debug.Print LBound(arr, 2) & ":" & UBound(arr, 2)
Dim i As long, j As Long
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
Debug.Print arr(i, j)
Next j
Next i
Option Base 1
प्रत्येक कोड मॉड्यूल के शीर्ष पर होना चाहिए जहां सरणी बनाई जाती है या फिर से आयाम दिया जाता है यदि सरणियों को लगातार 1 की निचली सीमा के साथ बनाया जाए।