VBA मा "कार्य" र "उप" प्रक्रियाहरू

सामग्रीहरू

बिल्ट-इन VBA प्रकार्यहरू

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

यी प्रकार्यहरूको सूची 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) ... अन्त्य उप
यस अवस्थामा, पूर्णांक तर्क i मूल्य द्वारा पारित। प्रक्रिया छोडे पछि उप सबै संग बनाइएको i परिवर्तनहरू हराउनेछन्।
Sub AddToCells(ByRef i Integer को रूपमा) ... अन्त्य उप
यस अवस्थामा, पूर्णांक तर्क 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(ऐच्छिक iFontSize as integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize अन्त्य उप

यो प्रक्रिया उप कार्यहरू गर्दछ तर परिणाम फर्काउँदैन।

यो उदाहरणले वैकल्पिक तर्क पनि प्रयोग गर्दछ फन्ट साइज। यदि तर्क फन्ट साइज प्रक्रियामा पारित भएको छैन उप, त्यसपछि यसको पूर्वनिर्धारित मान 10 हो। यद्यपि, यदि तर्क फन्ट साइज कार्यविधिमा पारित उप, त्यसपछि कक्षहरूको चयन गरिएको दायरा प्रयोगकर्ताद्वारा निर्दिष्ट फन्ट साइजमा सेट गरिनेछ।

VBA उप प्रक्रिया: उदाहरण २: सेलहरूको चयन गरिएको दायरामा केन्द्रमा पङ्क्तिबद्ध र बोल्ड फन्ट

निम्न कार्यविधि भर्खरै छलफल गरिएको जस्तै छ, तर यस पटक, रिसाइज गर्नुको सट्टा, सेलहरूको चयन गरिएको दायरामा बोल्ड फन्ट शैली लागू गर्दछ। यो एक उदाहरण प्रक्रिया हो उप, जसले कुनै तर्क लिदैन:

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

एक्सेल VBA मा "उप" प्रक्रिया कल गर्दै

अर्को प्रक्रियाबाट VBA प्रक्रिया "सब" लाई कल गर्नुहोस्

VBA प्रक्रियालाई कल गर्न उप अर्को VBA प्रक्रियाबाट, तपाईंले किवर्ड लेख्न आवश्यक छ कल, प्रक्रियाको नाम उप र थप कोष्ठकहरूमा प्रक्रियाको तर्कहरू छन्। यो तलको उदाहरणमा देखाइएको छ:

Sub main() कल ढाँचा_Centered_And_Sized(20) End Sub

यदि प्रक्रिया Format_Centered_And_Sized एकभन्दा बढी तर्कहरू छन्, तिनीहरूलाई अल्पविरामद्वारा छुट्याइनुपर्छ। यो जस्तो:

Sub main() कल Format_Centered_And_Sized(arg1, arg2, ...) End Sub

कार्यपत्रबाट VBA प्रक्रिया "सब" लाई कल गर्नुहोस्

प्रक्रिया उप एक्सेल पाना सेलमा सिधै प्रविष्ट गर्न सकिँदैन, जस्तै प्रक्रियाको साथ गर्न सकिन्छ समारोहकिनभने प्रक्रिया उप मान फिर्ता गर्दैन। यद्यपि, प्रक्रियाहरू उप, जसमा कुनै तर्क छैन र घोषणा गरिएको छ सार्वजनिक (तल देखाइएको रूपमा) कार्यपत्रका प्रयोगकर्ताहरूका लागि उपलब्ध हुनेछ। यसरी, यदि माथि छलफल गरिएको सरल प्रक्रियाहरू उप भिजुअल बेसिक सम्पादकमा मोड्युलमा सम्मिलित, प्रक्रिया Format_Centered_And_Bold एक्सेल कार्यपत्र, र प्रक्रियामा प्रयोगको लागि उपलब्ध हुनेछ Format_Centered_And_Sized - उपलब्ध हुने छैन किनभने यसमा तर्कहरू छन्।

यहाँ एक प्रक्रिया चलाउन (वा कार्यान्वयन) गर्न सजिलो तरिका छ उप, कार्यपत्रबाट पहुँचयोग्य:

  • प्रेस Alt + F8 (कुञ्जी थिच्नुहोस् alt र यसलाई समातेर, कुञ्जी थिच्नुहोस् F8).
  • देखा पर्ने म्याक्रोहरूको सूचीमा, तपाईंले चलाउन चाहनुभएको एउटा चयन गर्नुहोस्।
  • प्रेस चलाउनुहोस् (दौड)

कार्यविधि सञ्चालन गर्न उप छिटो र सजिलै संग, तपाईं यसलाई किबोर्ड सर्टकट तोक्न सक्नुहुन्छ। यसका लागि:

  • प्रेस Alt + F8.
  • देखा पर्ने म्याक्रोहरूको सूचीमा, तपाईंले किबोर्ड सर्टकट तोक्न चाहनु भएको चयन गर्नुहोस्।
  • प्रेस परिमिति (विकल्पहरू) र देखा पर्ने संवाद बक्समा, किबोर्ड सर्टकट प्रविष्ट गर्नुहोस्।
  • प्रेस OK र संवाद बन्द गर्नुहोस् म्याक्रो (म्याक्रो)।

ध्यान: म्याक्रोमा कुञ्जीपाटी सर्टकट असाइन गर्दा, एक्सेलमा मानकको रूपमा प्रयोग गरिएको छैन भनेर सुनिश्चित गर्नुहोस् (उदाहरणका लागि, 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_Amount, एक निर्मित VBA प्रकार्य कोड मा सम्मिलित छ MsgBox, जसले प्रयोगकर्तालाई चेतावनी पपअप देखाउँछ।

जवाफ छाड्नुस्