एक्सेल VBA सबरूटीन: उदाहरण के साथ VBA में Sub को कैसे कॉल करें
⚡ स्मार्ट सारांश
Excel VBA सब रूटीन कोड के एक ब्लॉक को समूहित करता है जो कोई मान लौटाए बिना कोई कार्य करता है। यह पृष्ठ नामकरण नियमों, सब रूटीन के सिंटैक्स, कमांड बटन से सब रूटीन को कॉल करने और सब रूटीन और फंक्शन में अंतर को बताता है।

VBA में सबरूटीन क्या है?
A VBA में सबरूटीन कोड का एक टुकड़ा है जो कोड में वर्णित एक विशिष्ट कार्य करता है लेकिन कोई परिणाम या मान नहीं लौटाता है। सबरूटीन का उपयोग कोड के बड़े टुकड़ों को छोटे प्रबंधनीय भागों में तोड़ने के लिए किया जाता है। सबरूटीन को प्रोग्राम में कहीं से भी कई बार याद किया जा सकता है।
मान लीजिए कि आपने यूजर इनपुट डेटा स्वीकार करने के लिए टेक्स्ट बॉक्स के साथ यूजर इंटरफ़ेस बनाया है। आप एक सबरूटीन बना सकते हैं जो टेक्स्ट बॉक्स की सामग्री को साफ़ करता है। ऐसे परिदृश्य में VBA कॉल सबरूटीन उपयुक्त है क्योंकि आप कोई परिणाम वापस नहीं करना चाहते हैं।
सबरूटीन्स का उपयोग क्यों करें
- कोड को छोटे प्रबंधनीय कोड में विभाजित करेंएक औसत कंप्यूटर प्रोग्राम में हज़ारों-हज़ार सोर्स कोड लाइनें होती हैं। इससे जटिलता आती है। सबरूटीन प्रोग्राम को कोड के छोटे-छोटे प्रबंधनीय हिस्सों में तोड़कर इस समस्या को हल करने में मदद करते हैं।
- Code पुनर्प्रयोगमान लीजिए कि आपके पास एक प्रोग्राम है जिसे डेटाबेस तक पहुँचने की आवश्यकता है, प्रोग्राम में लगभग सभी विंडो को डेटाबेस के साथ इंटरैक्ट करने की आवश्यकता होगी। इन विंडो के लिए अलग-अलग कोड लिखने के बजाय, आप एक ऐसा फ़ंक्शन बना सकते हैं जो सभी डेटाबेस इंटरैक्शन को संभालता है। फिर आप इसे अपनी इच्छानुसार किसी भी विंडो से कॉल कर सकते हैं।
- सबरूटीन और फ़ंक्शन स्व-दस्तावेजीकरण हैंमान लीजिए कि आपके पास एक फ़ंक्शन है calculateLoanInterest और दूसरा फ़ंक्शन है connectToDatabase. सबरूटीन/फ़ंक्शन के नाम को देखकर ही प्रोग्रामर यह बता पाएगा कि प्रोग्राम क्या करता है.
नाम लिखने से पहले, कंपाइलर अपेक्षा करता है कि नाम कुछ संक्षिप्त नियमों का पालन करे।
सबरूटीन और फ़ंक्शन नामकरण के नियम
सबरूटीन्स और फंक्शन्स का उपयोग करने के लिए कुछ नियमों का पालन करना होता है।
- सबरूटीन या VBA कॉल फ़ंक्शन नाम में स्पेस नहीं हो सकता
- एक्सेल VBA कॉल सब या फ़ंक्शन का नाम किसी अक्षर या अंडरस्कोर से शुरू होना चाहिए। यह किसी संख्या या विशेष वर्ण से शुरू नहीं हो सकता
- सबरूटीन या फ़ंक्शन नाम कीवर्ड नहीं हो सकता। कीवर्ड एक ऐसा शब्द है जिसका विशेष अर्थ होता है VBA. Private, Sub, Function, और End आदि जैसे शब्द कीवर्ड के उदाहरण हैं। कंपाइलर इनका उपयोग विशिष्ट कार्यों के लिए करता है।
एक वैध नाम चुने जाने के बाद, घोषणा स्वयं एक निश्चित पैटर्न का अनुसरण करती है।
VBA सबरूटीन सिंटैक्स
इस उदाहरण का अनुसरण करने के लिए आपको एक्सेल में डेवलपर टैब को सक्षम करना होगा। यदि आप नहीं जानते कि डेवलपर टैब को कैसे सक्षम किया जाता है, तो ट्यूटोरियल पढ़ें एक्सेल में VBA नियंत्रण
यहाँ वाक्यविन्यास में,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
वाक्यविन्यास स्पष्टीकरण
| Code | कार्य |
|---|---|
|
|
|
|
|
|
निम्नलिखित सबरूटीन प्रथम और अंतिम नाम स्वीकार करता है और उन्हें संदेश बॉक्स में प्रदर्शित करता है।
अब हम इस Sub Processor को प्रोग्राम और निष्पादित करने जा रहे हैं। आइये इसे देखें।
VBA में Sub को कैसे कॉल करें
नीचे VBA में Sub को कॉल करने की चरण-दर-चरण प्रक्रिया दी गई है:
- उपयोगकर्ता इंटरफ़ेस डिज़ाइन करें और उपयोगकर्ता नियंत्रणों के लिए गुण सेट करें।
- सबरूटीन जोड़ें
- सबरूटीन को कॉल करने वाले कमांड बटन के लिए क्लिक इवेंट कोड लिखें
- आवेदन का परीक्षण करें
चरण 1) यूजर इंटरफेस
उपयोगकर्ता इंटरफ़ेस को नीचे दी गई छवि के अनुसार डिज़ाइन करें।
निम्नलिखित गुण सेट करें: हम जो गुण सेट कर रहे हैं:
| एस / एन | नियंत्रण | संपत्ति | वैल्यू |
|---|---|---|---|
| 1 | कमांडबटन1 | नाम | btnपूर्णनाम प्रदर्शित करें |
| 2 | शीर्षक | पूरा नाम सबरूटीन |
आपका इंटरफ़ेस अब इस प्रकार दिखना चाहिए।
चरण 2) सबरूटीन जोड़ें
- कोड विंडो खोलने के लिए Alt + F11 दबाएँ
- निम्नलिखित सबरूटीन जोड़ें
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
यहाँ कोड में,
| Code | क्रियाएँ |
|---|---|
|
|
|
|
|
|
चरण 3) सबरूटीन को कॉल करना
कमांड बटन क्लिक इवेंट से सबरूटीन को कॉल करना।
- नीचे दी गई छवि में दिखाए गए अनुसार कमांड बटन पर राइट क्लिक करें। व्यू चुनें। Code.
- कोड संपादक खुल जाएगा
btnDisplayFullName कमांड बटन के क्लिक इवेंट के लिए कोड एडिटर में निम्नलिखित कोड जोड़ें।
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
आपकी कोड विंडो अब इस प्रकार दिखाई देगी
परिवर्तन सहेजें और कोड विंडो बंद करें.
चरण 4) कोड का परीक्षण
डेवलपर टूलबार पर डिज़ाइन मोड को 'ऑफ' करें। जैसा कि नीचे दिखाया गया है।
चरण 5) कमांड बटन 'फुलनेम सबरूटीन' पर क्लिक करें।
आपको निम्नलिखित परिणाम मिलेंगे
बटन सुविधाजनक तो है, लेकिन यह सबरूटीन शुरू करने का एकमात्र तरीका नहीं है, और विकास के दौरान यह शायद ही कभी सबसे तेज़ तरीका होता है।
बिना बटन के सबरूटीन कैसे चलाएं
कोड लिखते समय, किसी सबरूटीन को टेस्ट करने के लिए शीट में कंट्रोल जोड़ना समय की बर्बादी है। VBA इसे चलाने के चार अन्य तरीके प्रदान करता है, और प्रत्येक तरीका डेवलपमेंट साइकिल के अलग-अलग चरणों के लिए उपयुक्त है।
- एडिटर में F5 दबाएं: सब-फंक्शन के अंदर कहीं भी कर्सर रखें और F5 दबाएं। यह तुरंत चल जाएगा। यह तभी काम करेगा जब सब-फंक्शन कोई आर्गुमेंट न ले, क्योंकि VBA के पास देने के लिए कोई मान नहीं होते।
- F8 दबाकर आगे बढ़ें: एक ही रन को एक-एक लाइन करके चलाएं, ताकि आप लोकल विंडो में प्रत्येक वेरिएबल में होने वाले बदलाव को देख सकें। इसका उपयोग तब करें जब परिणाम गलत हो और आपको यह देखना हो कि गलती कहाँ हुई है।
- मैक्रोज़ डायलॉग का उपयोग करें: डेवलपर टैब पर, मैक्रोज़ पर क्लिक करें, नाम चुनें और रन पर क्लिक करें। इस सूची में केवल बिना आर्गुमेंट वाले पब्लिक सब दिखाई देते हैं, इसलिए आमतौर पर हेल्पर सब को प्राइवेट घोषित किया जाता है।
- इसे किसी अन्य सब से कॉल करें: यह वह विधि है जिसका उपयोग किसी भी सब के लिए किया जाता है जो आर्गुमेंट लेता है, और जिस पर ऊपर दिया गया कमांड बटन निर्भर करता है।
अंतिम विकल्प के दो स्वीकृत रूप हैं। नाम के बाद केवल तर्क लिखना काम करता है, और स्पष्ट रूप से कॉल कीवर्ड का उपयोग करना भी काम करता है, लेकिन दोनों में ब्रैकेट का नियम अलग-अलग है।
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
दोनों लाइनें बिल्कुल एक ही काम करती हैं। कॉल कीवर्ड के बिना ब्रैकेट लिखकर दोनों रूपों को मिलाना, सब फ़ंक्शन में एक से अधिक आर्गुमेंट होने पर "Expected: =" कंपाइल एरर का सबसे आम कारण है।
VBA में सब और फंक्शन के बीच अंतर
VBA में Sub और Function दो प्रकार की प्रक्रियाएं होती हैं, और शुरुआती लोग अक्सर गलत प्रक्रिया चुन लेते हैं। निर्णायक प्रश्न सरल है: क्या कॉलिंग कोड को कोई मान वापस चाहिए?
| Feature | उप | समारोह |
|---|---|---|
| एक मान लौटाता है | नहीं | हां, फ़ंक्शन नाम को सौंपा गया है |
| घोषित किया गया | उप ... अंत उप | फ़ंक्शन … फ़ंक्शन समाप्त |
| कहा जाता है | अपनी ही पंक्ति पर एक बयान | किसी व्यंजक का भाग, उदाहरण के लिए x = myFunc(2) |
| वर्कशीट सेल में उपयोग किया जा सकता है | नहीं | हां, उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन के रूप में |
| विशिष्ट उपयोग | शीट को फॉर्मेट करें, इनपुट साफ़ करें, संदेश दिखाएँ | कुल योग की गणना करें, मान को परिवर्तित करें, डेटा खोजें |
जब कोड वर्कबुक पर कार्य करता है तो सब का उपयोग करें, और VBA फ़ंक्शन जब कोड ऐसा उत्तर उत्पन्न करता है जिसे कोई और चीज उपयोग करती है।






