खोज…
वाक्य - विन्यास
- पहचानकर्ता नाम [ तर्क ]
- कॉल आइडेंटिफ़ायर नाम [ (तर्क) ]
- [लेट | सेट] एक्सप्रेशन = पहचानकर्ता नाम (तर्क) ]
- [Let | Set] IdentifierName [ (तर्कों) ] = अभिव्यक्ति
पैरामीटर
पैरामीटर | जानकारी |
---|---|
IdentifierName | कॉल करने की प्रक्रिया का नाम। |
बहस | प्रक्रिया को पारित करने के लिए तर्कों की एक अल्पविराम से अलग की गई सूची। |
टिप्पणियों
पहले दो वाक्यविन्यास Sub
प्रक्रियाओं को कॉल करने के लिए हैं; ध्यान दें पहले वाक्यविन्यास में कोई कोष्ठक शामिल नहीं है।
देखें यह भ्रामक है। हमेशा कोष्ठक का उपयोग क्यों न करें? पहले दो वाक्यविन्यासों के बीच अंतर की गहन व्याख्या के लिए।
तीसरा सिंटेक्स Function
और Property Get
प्रक्रियाओं को कॉल करने के लिए है; जब पैरामीटर होते हैं, तो कोष्ठक हमेशा अनिवार्य होते हैं। Let
जब एक मान निर्दिष्ट कीवर्ड वैकल्पिक है, लेकिन Set
जब एक संदर्भ बताए कीवर्ड आवश्यक है।
चौथा सिंटेक्स Property Let
और Property Set
प्रक्रियाओं को कॉल करने के लिए है; असाइनमेंट के दाईं ओर स्थित expression
को प्रॉपर्टी के वैल्यू पैरामीटर में पास किया जाता है।
इम्प्लिमेंट कॉल सिंटैक्स
ProcedureName
ProcedureName argument1, argument2
किसी भी कोष्ठक के बिना उसके नाम से एक प्रक्रिया को बुलाओ।
किनारे का मामला
Call
कीवर्ड केवल एक किनारे के मामले में आवश्यक है:
Call DoSomething : DoSomethingElse
DoSomething
और DoSomethingElse
प्रक्रियाएं कहलाती हैं। यदि Call
कीवर्ड हटा दिया गया था, तो DoSomething
को एक प्रक्रिया कॉल के बजाय लाइन लेबल के रूप में पार्स किया जाएगा, जो कोड को हटा देगा:
DoSomething: DoSomethingElse 'only DoSomethingElse will run
वापसी मान
एक प्रक्रिया कॉल के परिणाम को प्राप्त करने के लिए (जैसे Function
या Property Get
प्रक्रियाएँ Property Get
करें), कॉल को एक असाइनमेंट के दाईं ओर रखें:
result = ProcedureName
result = ProcedureName(argument1, argument2)
यदि पैरामीटर हैं, तो कोष्ठक मौजूद होना चाहिए। यदि प्रक्रिया में कोई पैरामीटर नहीं है, तो कोष्ठक निरर्थक हैं।
यह भ्रामक है। हमेशा कोष्ठक का उपयोग क्यों न करें?
कोष्ठक का उपयोग फ़ंक्शन कॉल के तर्कों को संलग्न करने के लिए किया जाता है। उन्हें प्रक्रिया कॉल के लिए उपयोग करने से अप्रत्याशित समस्याएं हो सकती हैं।
क्योंकि वे बग का परिचय दे सकते हैं, रन-टाइम पर, प्रक्रिया के लिए संभवतः अनपेक्षित मान पास करके और संकलन-समय पर केवल अवैध सिंटैक्स द्वारा।
रन-टाइम
निरर्थक कोष्ठक बग का परिचय दे सकते हैं। एक प्रक्रिया है कि एक पैरामीटर के रूप में एक वस्तु संदर्भ लेता है दिया ...
Sub DoSomething(ByRef target As Range)
End Sub
... और कोष्ठक के साथ बुलाया:
DoSomething (Application.ActiveCell) 'raises an error at runtime
यह "ऑब्जेक्ट आवश्यक" रनटाइम त्रुटि # 424 बढ़ाएगा। अन्य परिस्थितियों में अन्य त्रुटियां संभव हैं: यहां Application.ActiveCell
Range
ऑब्जेक्ट संदर्भ का मूल्यांकन किया जा रहा है और मान द्वारा प्रक्रिया के हस्ताक्षर की परवाह किए बिना निर्दिष्ट किया गया है कि target
ByRef
पारित किया जाएगा। उपरोक्त स्निपेट में ByVal
से DoSomething
को दिया गया वास्तविक मान Application.ActiveCell.Value
।
कोष्ठक वीबीए को ब्रैकेटेड अभिव्यक्ति के मूल्य का मूल्यांकन करने के लिए मजबूर करते हैं, और परिणाम को ByVal
कहा जाता है। जब मूल्यांकन किए गए परिणाम का प्रकार प्रक्रिया की अपेक्षित प्रकार को बेमेल कर देता है और इसे कथित रूप से परिवर्तित नहीं किया जा सकता है, तो एक रनटाइम त्रुटि उठाई जाती है।
संकलन समय
यह कोड संकलित करने में विफल रहेगा:
MsgBox ("Invalid Code!", vbCritical)
क्योंकि अभिव्यक्ति ("Invalid Code!", vbCritical)
मूल्यांकन किसी मूल्य पर नहीं किया जा सकता है।
यह संकलन और कार्य करेगा:
MsgBox ("Invalid Code!"), (vbCritical)
लेकिन निश्चित रूप से मूर्खतापूर्ण लगेगा। निरर्थक कोष्ठक से बचें।
स्पष्ट कॉल सिंटैक्स
Call ProcedureName
Call ProcedureName(argument1, argument2)
स्पष्ट कॉल सिंटैक्स को तर्क सूची के चारों ओर Call
कीवर्ड और कोष्ठक की आवश्यकता होती है; यदि पैरामीटर नहीं हैं, तो कोष्ठक निरर्थक हैं। जब अधिक आधुनिक अंतर्निहित कॉल सिंटैक्स VB में जोड़ा गया था, तो इस सिंटैक्स को अप्रचलित कर दिया गया था।
वैकल्पिक तर्क
कुछ प्रक्रियाओं में वैकल्पिक तर्क हैं। वैकल्पिक तर्क हमेशा आवश्यक तर्कों के बाद आते हैं, लेकिन प्रक्रिया को उनके बिना कहा जा सकता है।
उदाहरण के लिए, समारोह है, ProcedureName
दो आवश्यक तर्कों (के लिए गए थे argument1
, argument2
), और एक वैकल्पिक तर्क, optArgument3
, यह कम से कम चार तरीके कहा जा सकता है:
' Without optional argument
result = ProcedureName("A", "B")
' With optional argument
result = ProcedureName("A", "B", "C")
' Using named arguments (allows a different order)
result = ProcedureName(optArgument3:="C", argument1:="A", argument2:="B")
' Mixing named and unnamed arguments
result = ProcedureName("A", "B", optArgument3:="C")
फ़ंक्शन हेडर की संरचना को यहां बुलाया जा रहा है, कुछ इस तरह दिखाई देगा:
Function ProcedureName(argument1 As String, argument2 As String, Optional optArgument3 As String) As String
Optional
कीवर्ड इंगित करता है कि यह तर्क छोड़ा जा सकता है। जैसा कि पहले उल्लेख किया गया है - हेडर में पेश किए गए किसी भी वैकल्पिक तर्क को किसी भी आवश्यक तर्क के बाद, अंत में दिखाई देना चाहिए ।
आप इस मामले में तर्क के लिए एक डिफ़ॉल्ट मान प्रदान कर सकते हैं कि एक मान फ़ंक्शन में पारित नहीं किया गया है:
Function ProcedureName(argument1 As String, argument2 As String, Optional optArgument3 As String = "C") As String
इस फ़ंक्शन में, यदि c
लिए तर्क की आपूर्ति नहीं की जाती है, तो यह मान "C"
डिफ़ॉल्ट होगा। यदि कोई मान आपूर्ति की जाती है, तो यह डिफ़ॉल्ट मान को ओवरराइड करेगा।