VBA मधील "फंक्शन" आणि "सब" प्रक्रिया

सामग्री

अंगभूत VBA कार्ये

तुम्ही तुमची स्वतःची VBA फंक्शन्स तयार करण्यास सुरुवात करण्यापूर्वी, हे जाणून घेणे चांगले आहे की Excel VBA मध्ये प्रीबिल्ट बिल्ट-इन फंक्शन्सचा समृद्ध संग्रह आहे जो तुम्ही तुमचा कोड लिहिताना वापरू शकता.

या फंक्शन्सची सूची व्हीबीए एडिटरमध्ये पाहिली जाऊ शकते:

  • एक्सेल वर्कबुक उघडा आणि VBA संपादक लाँच करा (हे करण्यासाठी क्लिक करा Alt + F11) वर क्लिक करा आणि नंतर दाबा F2.
  • स्क्रीनच्या शीर्षस्थानी डावीकडे असलेल्या ड्रॉपडाउन सूचीमधून लायब्ररी निवडा VBA.
  • अंगभूत VBA वर्ग आणि कार्यांची सूची दिसेल. विंडोच्या तळाशी त्याचे संक्षिप्त वर्णन प्रदर्शित करण्यासाठी फंक्शनच्या नावावर क्लिक करा. दाबणे F1 त्या वैशिष्ट्यासाठी ऑनलाइन मदत पृष्ठ उघडेल.

याव्यतिरिक्त, उदाहरणांसह अंगभूत VBA फंक्शन्सची संपूर्ण यादी व्हिज्युअल बेसिक डेव्हलपर सेंटरमध्ये आढळू शकते.

VBA मध्ये सानुकूल प्रक्रिया "फंक्शन" आणि "सब"

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

म्हणून, जर तुम्हाला क्रिया करण्याची आणि काही परिणाम मिळवण्याची आवश्यकता असेल (उदाहरणार्थ, अनेक संख्यांची बेरीज), तर प्रक्रिया सहसा वापरली जाते कार्य, आणि फक्त काही क्रिया करण्यासाठी (उदाहरणार्थ, सेलच्या गटाचे स्वरूपन बदला), तुम्हाला प्रक्रिया निवडणे आवश्यक आहे उप.

वितर्क

वितर्क वापरून VBA प्रक्रियांमध्ये विविध डेटा पास केला जाऊ शकतो. प्रक्रिया घोषित करताना युक्तिवाद सूची निर्दिष्ट केली जाते. उदाहरणार्थ, प्रक्रिया उप VBA मध्ये निवडलेल्या श्रेणीतील प्रत्येक सेलमध्ये दिलेला पूर्णांक (पूर्णांक) जोडतो. तुम्ही हा नंबर वितर्क वापरून प्रक्रियेत पास करू शकता, जसे की:

उप AddToCells(i पूर्णांक म्हणून) ... उप समाप्त करा

लक्षात ठेवा की कार्यपद्धतींसाठी युक्तिवाद होत आहेत कार्य и उप VBA मध्ये पर्यायी आहे. काही प्रक्रियांना युक्तिवादाची आवश्यकता नसते.

पर्यायी युक्तिवाद

VBA प्रक्रियांमध्ये वैकल्पिक युक्तिवाद असू शकतात. हे युक्तिवाद आहेत जे वापरकर्ता इच्छित असल्यास निर्दिष्ट करू शकतो आणि जर ते वगळले गेले तर प्रक्रिया त्यांच्यासाठी डीफॉल्ट मूल्ये वापरते.

मागील उदाहरणाकडे परत जाताना, फंक्शनला पर्यायी पूर्णांक वितर्क करण्यासाठी, ते याप्रमाणे घोषित केले जाईल:

उप AddToCells (पर्यायी i पूर्णांक = 0 म्हणून)

या प्रकरणात, पूर्णांक युक्तिवाद i डीफॉल्ट 0 असेल.

प्रक्रियेमध्ये अनेक पर्यायी युक्तिवाद असू शकतात, जे सर्व युक्तिवाद सूचीच्या शेवटी सूचीबद्ध आहेत.

मूल्य आणि संदर्भानुसार युक्तिवाद उत्तीर्ण करणे

VBA मधील युक्तिवाद दोन प्रकारे प्रक्रियेत पास केले जाऊ शकतात:

  • ByVal - मूल्यानुसार युक्तिवाद करणे. याचा अर्थ असा की केवळ मूल्य (म्हणजे युक्तिवादाची एक प्रत) प्रक्रियेस दिले जाते आणि म्हणून प्रक्रियेच्या आत युक्तिवादात केलेले कोणतेही बदल प्रक्रिया बाहेर पडल्यावर गमावले जातील.
  • बायरेफ - संदर्भाद्वारे युक्तिवाद करणे. म्हणजेच, मेमरीमधील युक्तिवाद स्थानाचा वास्तविक पत्ता प्रक्रियेस पास केला जातो. प्रक्रियेच्या आतील युक्तिवादात केलेले कोणतेही बदल प्रक्रिया बाहेर पडल्यावर जतन केले जातील.

कीवर्ड वापरणे ByVal or बायरेफ प्रक्रियेच्या घोषणेमध्ये, तुम्ही युक्तिवाद प्रक्रियेला कसा दिला जातो हे निर्दिष्ट करू शकता. हे खालील उदाहरणांमध्ये दर्शविले आहे:

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

लक्षात ठेवा की VBA मधील युक्तिवाद डीफॉल्टनुसार संदर्भानुसार पास केले जातात. दुसऱ्या शब्दांत, जर कीवर्ड वापरले नाहीत ByVal or बायरेफ, नंतर युक्तिवाद संदर्भाद्वारे पास केला जाईल.

प्रक्रियांसह पुढे जाण्यापूर्वी कार्य и उप अधिक तपशीलवार, या दोन प्रकारच्या कार्यपद्धतींमधील वैशिष्ट्ये आणि फरकांवर आणखी एक नजर टाकणे उपयुक्त ठरेल. खाली VBA प्रक्रियेची थोडक्यात चर्चा आहे कार्य и उप आणि साधी उदाहरणे दाखवली आहेत.

VBA प्रक्रिया "कार्य"

VBA संपादक प्रक्रिया ओळखतो कार्यजेव्हा खालील ओपनिंग आणि क्लोजिंग स्टेटमेंट्समध्ये बंद केलेल्या कमांड्सचा एक गट आढळतो:

फंक्शन... एंड फंक्शन

आधी सांगितल्याप्रमाणे, प्रक्रिया कार्य VBA मध्ये (विपरीत उप) मूल्य मिळवते. खालील नियम रिटर्न व्हॅल्यूवर लागू होतात:

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

हे खालील उदाहरणात चांगले स्पष्ट केले आहे.

VBA फंक्शन उदाहरण: 3 संख्यांवर गणितीय ऑपरेशन करणे

खालील VBA प्रक्रिया कोडचे उदाहरण आहे कार्य, जे प्रकाराचे तीन वितर्क घेते दुहेरी (दुहेरी-परिशुद्धता फ्लोटिंग-पॉइंट संख्या). परिणामी, प्रक्रिया आणखी एक प्रकार परत करते दुहेरीपहिल्या दोन वितर्क वजा तिसर्‍या वितर्कांच्या बेरजेइतके:

फंक्शन SumMinus(dNum1 दुप्पट, dNum2 दुप्पट, dNum3 दुप्पट) दुहेरी SumMinus = dNum1 + dNum2 - dNum3 फंक्शन समाप्त

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

VBA प्रक्रियेला "फंक्शन" कॉल करणे

वरील सोपी प्रक्रिया असल्यास कार्य व्हिज्युअल बेसिक एडिटरमधील मॉड्यूलमध्ये समाविष्ट केल्यावर, ते इतर VBA प्रक्रियांमधून कॉल केले जाऊ शकते किंवा एक्सेल वर्कबुकमधील वर्कशीटवर वापरले जाऊ शकते.

दुसर्‍या प्रक्रियेतून VBA प्रक्रियेला "फंक्शन" कॉल करा

कार्यपद्धती कार्य व्हेरिएबलला ती प्रक्रिया नियुक्त करून दुसर्‍या VBA प्रक्रियेतून कॉल केले जाऊ शकते. खालील उदाहरण प्रक्रियेसाठी कॉल दर्शवते सुमिनस, जे वर परिभाषित केले होते.

उपमुख्य () मंद एकूण दुहेरी एकूण = बेरीज (५, ४, ३) समाप्ती उप

वर्कशीटमधून VBA प्रक्रिया "फंक्शन" वर कॉल करा

VBA प्रक्रिया कार्य इतर कोणत्याही अंगभूत एक्सेल फंक्शनप्रमाणेच एक्सेल वर्कशीटवरून कॉल केले जाऊ शकते. म्हणून, मागील उदाहरणामध्ये तयार केलेली प्रक्रिया कार्य - सुमिनस वर्कशीट सेलमध्ये खालील अभिव्यक्ती प्रविष्ट करून कॉल केले जाऊ शकते:

=SumMinus(10, 5, 2)

VBA प्रक्रिया "सब"

VBA संपादकाला समजते की त्याच्या समोर एक प्रक्रिया आहे उपजेव्हा खालील ओपनिंग आणि क्लोजिंग स्टेटमेंट्समध्ये बंद केलेल्या कमांड्सचा एक गट आढळतो:

सब... एंड सब

VBA प्रक्रिया "सब": उदाहरण 1. सेलच्या निवडलेल्या श्रेणीमध्ये मध्यभागी संरेखन आणि फॉन्ट आकार बदलणे

साध्या VBA प्रक्रियेचे उदाहरण विचारात घ्या उप, ज्यांचे कार्य सेलच्या निवडलेल्या श्रेणीचे स्वरूपन बदलणे आहे. सेल मध्यभागी आहेत (उभ्या आणि क्षैतिज दोन्ही) आणि फॉन्ट आकार वापरकर्त्याने निर्दिष्ट केलेल्यामध्ये बदलला आहे:

Sub Format_Centered_And_Sized(Optional iFontSize as Integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize एंड सब

ही प्रक्रिया उप क्रिया करते परंतु परिणाम देत नाही.

हे उदाहरण पर्यायी युक्तिवाद देखील वापरते अक्षराचा आकार. वाद तर अक्षराचा आकार प्रक्रियेत पास नाही उप, नंतर त्याचे डीफॉल्ट मूल्य 10 आहे. तथापि, जर वितर्क असेल अक्षराचा आकार प्रक्रियेत पास उप, नंतर सेलची निवडलेली श्रेणी वापरकर्त्याने निर्दिष्ट केलेल्या फॉन्ट आकारावर सेट केली जाईल.

VBA उपप्रक्रिया: उदाहरण 2: सेलच्या निवडलेल्या श्रेणीमध्ये मध्यभागी संरेखित आणि ठळक फॉन्ट

खालील प्रक्रिया नुकतीच चर्चा केल्याप्रमाणे आहे, परंतु यावेळी, आकार बदलण्याऐवजी, सेलच्या निवडलेल्या श्रेणीवर ठळक फॉन्ट शैली लागू करते. ही एक उदाहरण प्रक्रिया आहे उप, जे कोणतेही युक्तिवाद घेत नाहीत:

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

एक्सेल VBA मध्ये "सब" प्रक्रिया कॉल करणे

दुसर्‍या प्रक्रियेतून VBA प्रक्रियेला "सब" कॉल करा

VBA प्रक्रिया कॉल करण्यासाठी उप दुसर्‍या VBA प्रक्रियेतून, तुम्हाला कीवर्ड लिहिणे आवश्यक आहे कॉल, प्रक्रियेचे नाव उप आणि पुढे कंसात प्रक्रियेचे युक्तिवाद आहेत. हे खालील उदाहरणात दर्शविले आहे:

सब मुख्य() कॉल फॉरमॅट_केंद्रित_आणि_आकार (२०) एंड सब

प्रक्रिया असल्यास स्वरूप_केंद्रित_आणि_आकार एकापेक्षा जास्त वितर्क आहेत, ते स्वल्पविरामाने वेगळे केले पाहिजेत. याप्रमाणे:

सबमेन

वर्कशीटमधून VBA प्रक्रियेला "सब" कॉल करा

कार्यपद्धती उप एक्‍सेल शीट सेलमध्‍ये थेट प्रवेश करता येत नाही, जसे की प्रक्रियेद्वारे केले जाऊ शकते कार्यकारण प्रक्रिया उप मूल्य परत करत नाही. तथापि, कार्यपद्धती उप, ज्यात कोणतेही युक्तिवाद नाहीत आणि म्हणून घोषित केले आहे सार्वजनिक (खाली दर्शविल्याप्रमाणे) वर्कशीटच्या वापरकर्त्यांसाठी उपलब्ध असेल. अशा प्रकारे, वर चर्चा केलेल्या सोप्या कार्यपद्धती असल्यास उप व्हिज्युअल बेसिक एडिटरमधील मॉड्यूलमध्ये घातली जाते, प्रक्रिया स्वरूप_केंद्रित_आणि_बोल्ड एक्सेल वर्कशीट आणि प्रक्रियेमध्ये वापरण्यासाठी उपलब्ध असेल स्वरूप_केंद्रित_आणि_आकार - उपलब्ध होणार नाही कारण त्यात वाद आहेत.

प्रक्रिया चालवण्याचा (किंवा अंमलात आणण्याचा) सोपा मार्ग येथे आहे उप, कार्यपत्रकातून प्रवेश करण्यायोग्य:

  • प्रेस Alt + F8 (की दाबा alt आणि ती दाबून ठेवताना, की दाबा F8).
  • दिसत असलेल्या मॅक्रोच्या सूचीमध्ये, तुम्हाला चालवायचा आहे तो निवडा.
  • प्रेस चालवा (धावणे)

एक प्रक्रिया पार पाडण्यासाठी उप त्वरीत आणि सहज, तुम्ही त्याला कीबोर्ड शॉर्टकट नियुक्त करू शकता. यासाठी:

  • प्रेस Alt + F8.
  • दिसत असलेल्या मॅक्रोच्या सूचीमध्ये, तुम्हाला कीबोर्ड शॉर्टकट नियुक्त करायचा आहे तो निवडा.
  • प्रेस घटके (पर्याय) आणि दिसत असलेल्या डायलॉग बॉक्समध्ये कीबोर्ड शॉर्टकट प्रविष्ट करा.
  • प्रेस OK आणि संवाद बंद करा मॅक्रो (मॅक्रो).

लक्ष द्या: मॅक्रोला कीबोर्ड शॉर्टकट नियुक्त करताना, ते Excel मध्ये मानक म्हणून वापरले जात नाही याची खात्री करा (उदाहरणार्थ, Ctrl + C). तुम्ही आधीपासून अस्तित्वात असलेला कीबोर्ड शॉर्टकट निवडल्यास, तो मॅक्रोला पुन्हा नियुक्त केला जाईल आणि परिणामी, वापरकर्ता अपघाताने मॅक्रो सुरू करू शकतो.

VBA प्रक्रियेची व्याप्ती

या ट्युटोरियलच्या भाग 2 मध्ये व्हेरिएबल्स आणि कॉन्स्टंट्सची व्याप्ती आणि कीवर्डची भूमिका यावर चर्चा केली आहे. सार्वजनिक и खाजगी. हे कीवर्ड VBA प्रक्रियेसह देखील वापरले जाऊ शकतात:

सार्वजनिक उप AddToCells(i पूर्णांक म्हणून) ... समाप्त उप
जर प्रक्रिया घोषणा कीवर्डच्या आधी असेल सार्वजनिक, नंतर प्रक्रिया त्या VBA प्रकल्पातील सर्व मॉड्यूल्ससाठी उपलब्ध असेल.
खाजगी उप AddToCells(i पूर्णांक म्हणून) ... समाप्त उप
जर प्रक्रिया घोषणा कीवर्डच्या आधी असेल खाजगी, नंतर ही प्रक्रिया फक्त वर्तमान मॉड्यूलसाठी उपलब्ध असेल. इतर कोणत्याही मॉड्यूलमध्ये असताना किंवा एक्सेल वर्कबुकमधून कॉल केले जाऊ शकत नाही.

लक्षात ठेवा की VBA प्रक्रिया घोषित करण्यापूर्वी कार्य or उप कीवर्ड घातलेला नाही, डीफॉल्ट गुणधर्म प्रक्रियेसाठी सेट केला आहे सार्वजनिक (म्हणजे, ते या VBA प्रकल्पात सर्वत्र उपलब्ध असेल). हे व्हेरिएबल डिक्लेरेशनच्या विरुद्ध आहे, जे डीफॉल्टनुसार असतात खाजगी.

VBA प्रक्रिया "फंक्शन" आणि "सब" पासून लवकर बाहेर पडा

जर तुम्हाला VBA प्रक्रियेची अंमलबजावणी समाप्त करायची असेल कार्य or उप, त्याच्या नैसर्गिक समाप्तीची वाट न पाहता, नंतर यासाठी ऑपरेटर आहेत फंक्शनमधून बाहेर पडा и निर्गमन उप. या ऑपरेटरचा वापर उदाहरण म्हणून एक सोपी प्रक्रिया वापरून खाली दर्शविला आहे. कार्यA ज्याला पुढील ऑपरेशन्स करण्यासाठी सकारात्मक युक्तिवाद प्राप्त होण्याची अपेक्षा आहे. जर प्रक्रियेला नॉन-पॉझिटिव्ह मूल्य दिले गेले, तर पुढील ऑपरेशन्स करता येणार नाहीत, म्हणून वापरकर्त्याला त्रुटी संदेश दर्शविला जावा आणि प्रक्रिया त्वरित बाहेर पडली पाहिजे:

फंक्शन VAT_Amount(sVAT_Rate as single) सिंगल VAT_Amount = 0 जर sVAT_Rate <= 0 असेल तर MsgBox "sVAT_Rate चे सकारात्मक मूल्य अपेक्षित आहे परंतु प्राप्त झाले आहे " & sVAT_Rate फंक्शन समाप्त करा जर ... फंक्शन समाप्त करा

प्रक्रिया पूर्ण करण्यापूर्वी कृपया लक्षात ठेवा कार्य - VAT_रक्कम, कोडमध्ये अंगभूत VBA फंक्शन समाविष्ट केले आहे MsgBox, जे वापरकर्त्याला चेतावणी पॉपअप प्रदर्शित करते.

प्रत्युत्तर द्या