वीबीए में "फ़ंक्शन" और "उप" प्रक्रियाएं

विषय-सूची

अंतर्निहित वीबीए कार्य

इससे पहले कि आप अपना स्वयं का VBA फ़ंक्शन बनाना शुरू करें, यह जानना अच्छा है कि Excel VBA में प्रीबिल्ट-इन फ़ंक्शंस का एक समृद्ध संग्रह है जिसका उपयोग आप अपना कोड लिखते समय कर सकते हैं।

इन कार्यों की एक सूची VBA संपादक में देखी जा सकती है:

  • Excel कार्यपुस्तिका खोलें और VBA संपादक लॉन्च करें (ऐसा करने के लिए क्लिक करें ऑल्ट + F11), और फिर दबाएँ F2.
  • स्क्रीन के ऊपर बाईं ओर ड्रॉपडाउन सूची से एक पुस्तकालय का चयन करें VBA.
  • अंतर्निहित VBA कक्षाओं और कार्यों की एक सूची दिखाई देगी। विंडो के नीचे इसका संक्षिप्त विवरण प्रदर्शित करने के लिए फ़ंक्शन नाम पर क्लिक करें। दबाना F1 उस सुविधा के लिए ऑनलाइन सहायता पृष्ठ खुल जाएगा।

इसके अलावा, विजुअल बेसिक डेवलपर सेंटर में उदाहरणों के साथ बिल्ट-इन वीबीए फ़ंक्शन की पूरी सूची पाई जा सकती है।

वीबीए में कस्टम प्रक्रियाएं "फ़ंक्शन" और "सब"

एक्सेल विजुअल बेसिक में, एक विशिष्ट कार्य करने वाले आदेशों का एक सेट एक प्रक्रिया में रखा जाता है। समारोह (समारोह) या उप (सबरूटीन)। प्रक्रियाओं के बीच मुख्य अंतर समारोह и उप क्या वह प्रक्रिया है समारोह रिटर्न परिणाम, प्रक्रिया उप - नहीं।

इसलिए, यदि आपको क्रियाएं करने और कुछ परिणाम प्राप्त करने की आवश्यकता है (उदाहरण के लिए, कई संख्याओं का योग), तो आमतौर पर प्रक्रिया का उपयोग किया जाता है समारोह, और केवल कुछ क्रियाएं करने के लिए (उदाहरण के लिए, कक्षों के समूह के स्वरूपण को बदलें), आपको प्रक्रिया का चयन करने की आवश्यकता है उप.

तर्क

विभिन्न डेटा को तर्कों का उपयोग करके VBA प्रक्रियाओं में पारित किया जा सकता है। एक प्रक्रिया की घोषणा करते समय तर्क सूची निर्दिष्ट की जाती है। उदाहरण के लिए, प्रक्रिया उप VBA में चयनित श्रेणी में प्रत्येक कक्ष में दिए गए पूर्णांक (पूर्णांक) को जोड़ता है। आप इस संख्या को तर्क का उपयोग करके प्रक्रिया में पास कर सकते हैं, जैसे:

सब AddToCells(i As Integer) ... End Sub

ध्यान रखें कि प्रक्रियाओं के लिए तर्क होना समारोह и उप VBA में वैकल्पिक है। कुछ प्रक्रियाओं में तर्क की आवश्यकता नहीं होती है।

वैकल्पिक तर्क

VBA प्रक्रियाओं में वैकल्पिक तर्क हो सकते हैं। ये ऐसे तर्क हैं जिन्हें उपयोगकर्ता निर्दिष्ट कर सकता है यदि वे चाहें, और यदि उन्हें छोड़ दिया जाता है, तो प्रक्रिया उनके लिए डिफ़ॉल्ट मानों का उपयोग करती है।

पिछले उदाहरण पर लौटते हुए, किसी फ़ंक्शन के लिए एक पूर्णांक तर्क को वैकल्पिक बनाने के लिए, इसे इस तरह घोषित किया जाएगा:

उप AddToCells (वैकल्पिक i के रूप में पूर्णांक = 0)

इस मामले में, पूर्णांक तर्क i डिफ़ॉल्ट 0 होगा।

एक प्रक्रिया में कई वैकल्पिक तर्क हो सकते हैं, जो सभी तर्क सूची के अंत में सूचीबद्ध हैं।

मूल्य और संदर्भ द्वारा तर्क पारित करना

वीबीए में तर्क दो तरीकों से एक प्रक्रिया में पारित किए जा सकते हैं:

  • बायवैल - मूल्य द्वारा तर्क पारित करना। इसका मतलब यह है कि प्रक्रिया को केवल मान (अर्थात तर्क की एक प्रति) पारित किया जाता है, और इसलिए प्रक्रिया के अंदर तर्क में किए गए कोई भी परिवर्तन प्रक्रिया से बाहर निकलने पर खो जाएंगे।
  • बायफ - संदर्भ द्वारा तर्क पारित करना। यही है, स्मृति में तर्क स्थान का वास्तविक पता प्रक्रिया को दिया जाता है। प्रक्रिया के अंदर किसी तर्क में किए गए कोई भी परिवर्तन प्रक्रिया के बाहर निकलने पर सहेजे जाएंगे।

कीवर्ड का उपयोग करना बायवैल or बायफ प्रक्रिया घोषणा में, आप निर्दिष्ट कर सकते हैं कि प्रक्रिया में तर्क कैसे पारित किया जाता है। यह नीचे दिए गए उदाहरणों में दिखाया गया है:

Sub AddToCells(ByVal i As Integer) ... End Sub
इस मामले में, पूर्णांक तर्क i मूल्य से पारित। प्रक्रिया छोड़ने के बाद उप सभी के साथ बनाया गया i परिवर्तन खो जाएंगे।
Sub AddToCells(ByRef i As Integer) ... End Sub
इस मामले में, पूर्णांक तर्क i संदर्भ द्वारा पारित। प्रक्रिया छोड़ने के बाद उप सभी के साथ बनाया गया i परिवर्तन उस चर में संग्रहीत किए जाएंगे जो प्रक्रिया में पारित किया गया था उप.

याद रखें कि VBA में तर्क डिफ़ॉल्ट रूप से संदर्भ द्वारा पारित किए जाते हैं। दूसरे शब्दों में, यदि कीवर्ड का उपयोग नहीं किया जाता है बायवैल or बायफ, तो तर्क संदर्भ द्वारा पारित किया जाएगा।

प्रक्रियाओं के साथ आगे बढ़ने से पहले समारोह и उप अधिक विस्तार से, इन दो प्रकार की प्रक्रियाओं के बीच सुविधाओं और अंतरों पर एक और नज़र डालना उपयोगी होगा। वीबीए प्रक्रियाओं की संक्षिप्त चर्चा निम्नलिखित है समारोह и उप और सरल उदाहरण दिखाए गए हैं।

वीबीए प्रक्रिया "फ़ंक्शन"

VBA संपादक प्रक्रिया को पहचानता है समारोहजब यह निम्नलिखित उद्घाटन और समापन बयानों के बीच संलग्न आदेशों के समूह का सामना करता है:

समारोह ... अंत समारोह

जैसा कि पहले उल्लेख किया गया है, प्रक्रिया समारोह वीबीए में (विरोध के रूप में उप) एक मान देता है। निम्नलिखित नियम मान लौटाने पर लागू होते हैं:

  • प्रक्रिया के शीर्षलेख में वापसी मूल्य का डेटा प्रकार घोषित किया जाना चाहिए समारोह.
  • वेरिएबल जिसमें रिटर्न वैल्यू शामिल है, को प्रक्रिया के समान ही नामित किया जाना चाहिए समारोह. इस चर को अलग से घोषित करने की आवश्यकता नहीं है, क्योंकि यह हमेशा प्रक्रिया के एक अभिन्न अंग के रूप में मौजूद रहता है। समारोह.

यह निम्नलिखित उदाहरण में अच्छी तरह से चित्रित किया गया है।

वीबीए फंक्शन उदाहरण: 3 नंबरों पर गणितीय ऑपरेशन करना

निम्नलिखित VBA प्रक्रिया कोड का एक उदाहरण है: समारोह, जो प्रकार के तीन तर्क लेता है दोगुना (डबल-सटीक फ़्लोटिंग-पॉइंट नंबर)। नतीजतन, प्रक्रिया एक और प्रकार की संख्या लौटाती है दोगुनापहले दो तर्कों के योग के बराबर तीसरा तर्क घटा:

फंक्शन सम माइनस (dNum1 डबल के रूप में, dNum2 डबल के रूप में, dNum3 डबल के रूप में) डबल सममाइनस के रूप में = dNum1 + dNum2 - dNum3 एंड फंक्शन

यह बहुत ही सरल VBA प्रक्रिया समारोह दिखाता है कि तर्कों के माध्यम से डेटा को किसी प्रक्रिया में कैसे पास किया जाता है। आप देख सकते हैं कि प्रक्रिया द्वारा लौटाए गए डेटा प्रकार को परिभाषित किया गया है दोगुना (शब्द कहते हैं डबल के रूप में तर्कों की सूची के बाद)। यह उदाहरण यह भी दिखाता है कि प्रक्रिया का परिणाम कैसे होता है समारोह प्रक्रिया नाम के समान नाम वाले एक चर में संग्रहीत।

वीबीए प्रक्रिया को कॉल करना "फ़ंक्शन"

यदि उपरोक्त सरल प्रक्रिया समारोह विजुअल बेसिक एडिटर में एक मॉड्यूल में डाला जाता है, इसे अन्य वीबीए प्रक्रियाओं से बुलाया जा सकता है या एक्सेल वर्कबुक में वर्कशीट पर इस्तेमाल किया जा सकता है।

किसी अन्य प्रक्रिया से VBA प्रक्रिया "फ़ंक्शन" को कॉल करें

प्रक्रिया समारोह बस उस प्रक्रिया को एक चर के लिए निर्दिष्ट करके किसी अन्य VBA प्रक्रिया से बुलाया जा सकता है। निम्न उदाहरण एक प्रक्रिया के लिए कॉल दिखाता है सुमिनस, जो ऊपर परिभाषित किया गया था।

उप मुख्य () दुगना योग के रूप में मंद कुल = सम माइनस (5, 4, 3) अंत उप

वर्कशीट से वीबीए प्रक्रिया "फ़ंक्शन" को कॉल करें

वीबीए प्रक्रिया समारोह एक्सेल वर्कशीट से उसी तरह से कॉल किया जा सकता है जैसे कोई अन्य बिल्ट-इन एक्सेल फंक्शन। इसलिए, पिछले उदाहरण में बनाई गई प्रक्रिया समारोह - सुमिनस वर्कशीट सेल में निम्नलिखित एक्सप्रेशन दर्ज करके कॉल किया जा सकता है:

=SumMinus(10, 5, 2)

वीबीए प्रक्रिया «उप»

VBA संपादक समझता है कि उसके सामने एक प्रक्रिया है उपजब यह निम्नलिखित उद्घाटन और समापन बयानों के बीच संलग्न आदेशों के समूह का सामना करता है:

उप ... अंत उप

VBA प्रक्रिया "उप": उदाहरण 1. कोशिकाओं की एक चयनित श्रेणी में केंद्र संरेखण और फ़ॉन्ट आकार परिवर्तन

एक साधारण वीबीए प्रक्रिया के उदाहरण पर विचार करें उप, जिसका कार्य चयनित श्रेणी के कक्षों के स्वरूपण को बदलना है। कोशिकाएं केंद्रित होती हैं (ऊर्ध्वाधर और क्षैतिज दोनों) और फ़ॉन्ट आकार को उपयोगकर्ता द्वारा निर्दिष्ट में बदल दिया जाता है:

Sub Format_Centered_And_Sized(वैकल्पिक iFontSize As Integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub

यह कार्यविधि उप कार्रवाई करता है लेकिन परिणाम नहीं देता है।

यह उदाहरण एक वैकल्पिक तर्क का भी उपयोग करता है फ़ॉन्ट आकार. यदि तर्क फ़ॉन्ट आकार प्रक्रिया के लिए पारित नहीं किया गया उप, तो इसका डिफ़ॉल्ट मान 10 है। हालाँकि, यदि तर्क फ़ॉन्ट आकार प्रक्रिया के लिए पारित उप, तो सेल की चयनित श्रेणी को उपयोगकर्ता द्वारा निर्दिष्ट फ़ॉन्ट आकार पर सेट किया जाएगा।

VBA उप प्रक्रिया: उदाहरण 2: सेलों की चयनित श्रेणी में केंद्र संरेखित और बोल्ड फ़ॉन्ट

निम्नलिखित प्रक्रिया अभी चर्चा की गई प्रक्रिया के समान है, लेकिन इस बार, आकार बदलने के बजाय, यह चयनित कक्षों की श्रेणी में एक बोल्ड फ़ॉन्ट शैली लागू करती है। यह एक उदाहरण प्रक्रिया है उप, जो कोई तर्क नहीं लेता है:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub

एक्सेल वीबीए में "सब" प्रक्रिया को कॉल करना

किसी अन्य प्रक्रिया से VBA प्रक्रिया "उप" को कॉल करें

वीबीए प्रक्रिया को कॉल करने के लिए उप किसी अन्य VBA प्रक्रिया से, आपको कीवर्ड लिखना होगा कॉल, प्रक्रिया का नाम उप और आगे कोष्ठक में प्रक्रिया के तर्क हैं। यह नीचे दिए गए उदाहरण में दिखाया गया है:

उप मुख्य () कॉल Format_Centered_And_Sized(20) End Sub

यदि प्रक्रिया प्रारूप_केंद्रित_और_आकार एक से अधिक तर्क हैं, उन्हें अल्पविराम से अलग किया जाना चाहिए। ऐशे ही:

उप मुख्य () कॉल Format_Centered_And_Sized(arg1, arg2, ...) अंत उप

वर्कशीट से वीबीए प्रक्रिया "सब" को कॉल करें

प्रक्रिया उप एक्सेल शीट सेल में सीधे प्रवेश नहीं किया जा सकता है, जैसा कि एक प्रक्रिया के साथ किया जा सकता है समारोहक्योंकि प्रक्रिया उप एक मूल्य वापस नहीं करता है। हालांकि, प्रक्रियाएं उप, जिसका कोई तर्क नहीं है और घोषित किया गया है सार्वजनिक (जैसा कि नीचे दिखाया गया है) वर्कशीट के उपयोगकर्ताओं के लिए उपलब्ध होगा। इस प्रकार, यदि ऊपर चर्चा की गई सरल प्रक्रियाएं उप Visual Basic Editor में एक मॉड्यूल में डाला गया, प्रक्रिया प्रारूप_केंद्रित_और_बोल्ड एक्सेल वर्कशीट में उपयोग के लिए उपलब्ध होगा, और प्रक्रिया प्रारूप_केंद्रित_और_आकार - उपलब्ध नहीं होगा क्योंकि इसमें तर्क हैं।

यहां एक प्रक्रिया को चलाने (या निष्पादित) करने का एक आसान तरीका है उप, कार्यपत्रक से पहुँचा जा सकता है:

  • दबाएँ ऑल्ट + F8 (कुंजी दबाएं ऑल्ट और इसे दबाए रखते हुए, कुंजी दबाएं F8).
  • दिखाई देने वाले मैक्रोज़ की सूची में, वह चुनें जिसे आप चलाना चाहते हैं।
  • दबाएँ रन (दौड़ना)

एक प्रक्रिया करने के लिए उप जल्दी और आसानी से, आप इसे एक कीबोर्ड शॉर्टकट असाइन कर सकते हैं। इसके लिए:

  • दबाएँ ऑल्ट + F8.
  • दिखाई देने वाले मैक्रोज़ की सूची में, उसे चुनें जिसे आप कीबोर्ड शॉर्टकट असाइन करना चाहते हैं।
  • दबाएँ पैरामीटर्स (विकल्प) और दिखाई देने वाले संवाद बॉक्स में, कीबोर्ड शॉर्टकट दर्ज करें।
  • दबाएँ OK और डायलॉग बंद करें मैक्रो (मैक्रो)।

ध्यान: मैक्रो को कीबोर्ड शॉर्टकट असाइन करते समय, सुनिश्चित करें कि यह एक्सेल में मानक के रूप में उपयोग नहीं किया जाता है (उदाहरण के लिए, Ctrl + सी) यदि आप पहले से मौजूद कीबोर्ड शॉर्टकट का चयन करते हैं, तो इसे मैक्रो को पुन: असाइन किया जाएगा, और परिणामस्वरूप, उपयोगकर्ता गलती से मैक्रो प्रारंभ कर सकता है।

वीबीए प्रक्रिया स्कोप

इस ट्यूटोरियल के भाग 2 में चर और स्थिरांक के दायरे और खोजशब्दों की भूमिका पर चर्चा की गई है। सार्वजनिक и निजी. इन खोजशब्दों का उपयोग वीबीए प्रक्रियाओं के साथ भी किया जा सकता है:

सार्वजनिक उप AddToCells(i As Integer) ... End Sub
यदि प्रक्रिया घोषणा कीवर्ड से पहले है सार्वजनिक, तो प्रक्रिया उस VBA प्रोजेक्ट के सभी मॉड्यूल के लिए उपलब्ध होगी।
निजी उप AddToCells(i As Integer) ... End Sub
यदि प्रक्रिया घोषणा कीवर्ड से पहले है निजी, तो यह प्रक्रिया केवल वर्तमान मॉड्यूल के लिए उपलब्ध होगी। इसे किसी अन्य मॉड्यूल में या किसी एक्सेल वर्कबुक से कॉल नहीं किया जा सकता है।

याद रखें कि यदि VBA प्रक्रिया घोषित करने से पहले समारोह or उप कीवर्ड सम्मिलित नहीं है, प्रक्रिया के लिए डिफ़ॉल्ट गुण सेट है सार्वजनिक (अर्थात यह इस VBA प्रोजेक्ट में हर जगह उपलब्ध होगा)। यह परिवर्तनीय घोषणाओं के विपरीत है, जो डिफ़ॉल्ट रूप से हैं निजी.

वीबीए प्रक्रियाओं "फ़ंक्शन" और "सब" से जल्दी बाहर निकलना

यदि आपको वीबीए प्रक्रिया के निष्पादन को समाप्त करने की आवश्यकता है समारोह or उप, इसके प्राकृतिक अंत की प्रतीक्षा किए बिना, इसके लिए ऑपरेटर हैं समारोह से बाहर निकलें и उप से बाहर निकलें. एक उदाहरण के रूप में एक सरल प्रक्रिया का उपयोग करके इन ऑपरेटरों का उपयोग नीचे दिखाया गया है। समारोहए जो आगे के संचालन करने के लिए सकारात्मक तर्क प्राप्त करने की अपेक्षा करता है। यदि प्रक्रिया के लिए एक गैर-सकारात्मक मान पारित किया जाता है, तो कोई और संचालन नहीं किया जा सकता है, इसलिए उपयोगकर्ता को एक त्रुटि संदेश दिखाया जाना चाहिए और प्रक्रिया तुरंत बाहर निकलनी चाहिए:

फंक्शन VAT_Amount(sVAT_Rate As Single) सिंगल VAT_Amount = 0 अगर sVAT_Rate <= 0 तो MsgBox "sVAT_Rate के सकारात्मक मान की उम्मीद थी लेकिन प्राप्त हुआ" और sVAT_Rate Exit Function End if ... End Function

कृपया ध्यान दें कि प्रक्रिया पूरी करने से पहले समारोह - वैट राशि, एक अंतर्निहित VBA फ़ंक्शन कोड में डाला जाता है MsgBox, जो उपयोगकर्ता को एक चेतावनी पॉपअप प्रदर्शित करता है।

एक जवाब लिखें