स्क्रैच से वीबीए मैक्रोज़ लिखना

एक्सेल के मैक्रो रिकॉर्डर में बहुत शक्ति है, लेकिन इसकी सीमाएं हैं। जैसा कि एक अन्य लेख में बताया गया है, मैक्रो रिकॉर्डर अक्सर अनावश्यक कोड रिकॉर्ड करता है और तर्क या अन्य कार्यक्रमों के साथ बातचीत जैसी चीजों को रिकॉर्ड नहीं कर सकता है। लंबे मैक्रोज़ के लिए इसका उपयोग करना भी कठिन हो सकता है - महंगी गलतियाँ करने से बचने के लिए आप अपने कार्यों को पहले से ही स्टोरीबोर्डिंग कर सकते हैं।

इस लेख का उद्देश्य VBA में शुरू से मैक्रो को कोड करना शुरू करने में आपकी मदद करना है। आप सीखेंगे कि मैक्रो कहाँ संग्रहीत हैं, एक बुनियादी मैक्रो लिखें, और चर, तर्क और लूप का उपयोग करके VBA में प्रोग्रामिंग की मूल बातें सीखें।

शुरू करना

वीबीए और विजुअल बेसिक एडिटर

वीबीए, या अनुप्रयोगों के लिए विजुअल बेसिक, वह भाषा है जिसमें मैक्रोज़ लिखे जाते हैं। सभी मैक्रोज़ वीबीए कोड के रूप में संग्रहीत होते हैं, चाहे वे हाथ से कोडित हों या मैक्रो रिकॉर्डर के साथ बनाए गए हों।

आप Visual Basic Editor का उपयोग करके किसी कार्यपुस्तिका में सभी VBA कोड तक पहुँच सकते हैं। यह एक विशेष टेक्स्ट एडिटर और डिबगर है जो एक्सेल सहित सभी ऑफिस ऐप्स में बिल्ट-इन है। आमतौर पर, आप इस संपादक को इसके साथ खोलेंगे एएलटी+एफ11 एक्सेल में कीबोर्ड शॉर्टकट, लेकिन आप इसे एक्सेल से भी एक्सेस कर सकते हैं डेवलपर टैब यदि आपने इसे सक्षम किया है।

प्रोजेक्ट एक्सप्लोरर

NS प्रोजेक्ट एक्सप्लोरर वीबी संपादक के अंदर एक खिड़की है जो आपको उन सभी वस्तुओं को दिखाती है जिनमें वीबीए कोड हो सकता है। यदि आपको यह विंडो दिखाई नहीं देती है, तो दबाएं F5 इसे प्रकट करने या चुनने के लिए प्रोजेक्ट एक्सप्लोरर से राय मेन्यू।

प्रोजेक्ट एक्सप्लोरर में किसी आइटम पर डबल-क्लिक करने से उस आइटम का कोड दिखाई देगा। प्रोजेक्ट एक्सप्लोरर में कई प्रकार के आइटम दिखाई दे सकते हैं:

  • कार्यपुस्तिकाएं
  • कार्यपत्रक
  • उपयोगकर्ता प्रपत्र
  • कक्षा मॉड्यूल
  • मॉड्यूल (मैक्रोज़ इन मदों में संग्रहीत हैं)

हालांकि इन सभी आइटम प्रकारों में वीबीए कोड शामिल हो सकता है, मॉड्यूल में मैक्रोज़ को कोड करना सबसे अच्छा अभ्यास है।

अपना पहला मैक्रो बनाना

मैक्रोज़ सूची का उपयोग करना

मैक्रोज़ सूची आपको आपकी कार्यपुस्तिका के सभी मैक्रोज़ दिखाती है। इस सूची से आप किसी मौजूदा मैक्रो को संपादित कर सकते हैं, या एक नया मैक्रो बना सकते हैं।

मैक्रोज़ सूची का उपयोग करके एक नया मैक्रो बनाने के लिए:

  • डेवलपर टैब चुनें और क्लिक करें मैक्रो (या दबाएं एएलटी+F8)

  • अपने मैक्रो के लिए एक नया नाम टाइप करें, फिर "बनाएँ" पर क्लिक करें

"बनाएं" पर क्लिक करने के बाद वीबी संपादक दिखाई देगा, जो नव निर्मित मैक्रो दिखा रहा है। यदि आवश्यक हो तो एक्सेल मैक्रो के लिए एक नया मॉड्यूल बनाएगा।

वीबी संपादक में मैन्युअल रूप से

आप मैक्रो सूची के बिना मैन्युअल रूप से एक नया मैक्रो जोड़ सकते हैं। यदि आप उस मॉड्यूल को निर्दिष्ट करना चाहते हैं जिसमें मैक्रो सहेजा गया है तो यह बेहतर विकल्प है।

मैन्युअल रूप से मैक्रो जोड़ने के लिए:

  • वीबी संपादक खोलें (एएलटी+एफ11)
  • दोनों में से एक:
    • क्लिक करके एक नया मॉड्यूल जोड़ें सम्मिलित करें> मॉड्यूल मेनू पर (मॉड्यूल अपने आप खुल जाएगा)

    • या, प्रोजेक्ट एक्सप्लोरर में मौजूदा मॉड्यूल को खोलने के लिए उसे डबल-क्लिक करें

  • मॉड्यूल में, अपने नए मैक्रो के लिए कोड टाइप करें
उप MyMacro () अंत उप

ये दो पंक्तियां "माईमैक्रो" नामक मैक्रो की शुरुआत और अंत दर्शाती हैं (कोष्ठक को नोट करें, जो आवश्यक हैं)। यह एक्सेल में "व्यू मैक्रोज़" डायलॉग में दिखाई देगा और इसे एक बटन को सौंपा जा सकता है (भले ही यह अभी तक कुछ भी नहीं करता है)।

मैक्रो में कुछ कोड जोड़ें

अब, इस मैक्रो को वास्तव में कुछ करने के लिए "सब" और "एंड सब" लाइनों के बीच कुछ कोड जोड़ें:

सब मायमैक्रो () रेंज ("ए 1")। वैल्यू = "हैलो वर्ल्ड!" अंत उप

मूल कोड संरचनाएं

रेंज ऑब्जेक्ट

एक्सेल वीबीए वर्कशीट पर सेल्स का प्रतिनिधित्व करने के लिए रेंज ऑब्जेक्ट का उपयोग करता है। ऊपर के उदाहरण में, कोड के साथ एक रेंज ऑब्जेक्ट बनाया गया है रेंज ("ए 1") सेल A1 के मान तक पहुँचने के लिए।
रेंज ऑब्जेक्ट मुख्य रूप से सेल मान सेट करने के लिए उपयोग किए जाते हैं:

रेंज ("ए 1")। मान = 1
रेंज ("ए 1")। वैल्यू = "फर्स्ट सेल"

ध्यान दें कि सेल मानों को संख्याओं के रूप में परिभाषित करते समय, आप केवल संख्या दर्ज करते हैं, लेकिन पाठ दर्ज करते समय आपको पाठ को उद्धरणों से घेरना चाहिए।

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

रेंज ("ए 1")। फ़ॉन्ट। बोल्ड = ट्रू

आप सेल का फॉर्मूला भी सेट कर सकते हैं:

रेंज ("ए 1")। फॉर्मूला = "= योग (ए 2: ए 10)"

एक्सेल में, आप कर्सर के साथ कोशिकाओं के एक ब्लॉक का चयन कर सकते हैं (जैसे, A1 से D10 तक) और उन सभी को बोल्ड पर सेट करें। रेंज ऑब्जेक्ट इस तरह से कोशिकाओं के ब्लॉक तक पहुँच सकते हैं:

रेंज ("ए 1: डी 10")। फ़ॉन्ट। बोल्ड = ट्रू

आप एक साथ कई सेल/ब्लॉक भी देख सकते हैं:

रेंज ("ए 1: डी 10, ए 12: डी 12, जी 1")। फ़ॉन्ट। बोल्ड = ट्रू

इसके लिए प्रारूप उसी प्रारूप के समान है जिसका उपयोग आप एक्सेल में SUM () सूत्र के लिए कक्षों का चयन करते समय करेंगे। प्रत्येक ब्लॉक को अल्पविराम से अलग किया जाता है, और ब्लॉक को कोलन से अलग किए गए शीर्ष-बाएं और नीचे-दाएं कोशिकाओं द्वारा दर्शाया जाता है।

अंत में, रेंज ऑब्जेक्ट्स में वर्कशीट पर सामान्य संचालन करने के लिए अंतर्निहित विधियां होती हैं। उदाहरण के लिए, हो सकता है कि आप कुछ डेटा को एक स्थान से दूसरे स्थान पर कॉपी करना चाहें। यहाँ एक उदाहरण है:

रेंज ("A1: D10")। कॉपी रेंज ("F1")। पेस्ट स्पेशल xlPasteValues ​​​​रेंज ("F1")। पेस्ट स्पेशल xlPasteFormats

यह सेल A1:D10 को क्लिपबोर्ड पर कॉपी करता है, और फिर सेल C1 में शुरू होने वाला PasteSpecial() करता है - ठीक वैसे ही जैसे आप Excel में मैन्युअल रूप से करते हैं। ध्यान दें कि यह उदाहरण दिखाता है कि पेस्टस्पेशियल () का उपयोग केवल मूल्यों और प्रारूपों को चिपकाने के लिए कैसे किया जाता है - पेस्ट विशेष संवाद में आपको दिखाई देने वाले सभी विकल्पों के लिए पैरामीटर हैं।

यहां एक अन्य वर्कशीट में "ऑल" चिपकाने का एक उदाहरण दिया गया है:

रेंज ("ए 1: डी 10")। शीट कॉपी करें ("शीट 2")। रेंज ("ए 1")। पेस्ट स्पेशल xlPasteAll

यदि कथन

एक साथ यदि कथन, आप कोड के एक भाग को केवल "यदि" चला सकते हैं, एक निश्चित कथन सत्य है।

उदाहरण के लिए, हो सकता है कि आप किसी सेल को बोल्ड बनाना चाहते हैं और उसे लाल रंग में रंगना चाहते हैं, लेकिन केवल "यदि" सेल में मान 100 से कम है।

अगर रेंज ("ए 4")। मान <100 फिर रेंज ("ए 4")। फ़ॉन्ट। बोल्ड = ट्रू रेंज ("ए 4")। इंटीरियर। रंग = vbRed अंत अगर 

इफ स्टेटमेंट की उचित संरचना इस प्रकार है (वर्ग कोष्ठक वैकल्पिक घटकों को दर्शाता है):

तो अगर

[वरना तो]

[अन्यथा]

अगर अंत

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

पिछले एक पर आधारित एक और उदाहरण यहां दिया गया है, जहां सेल को मूल्य के आधार पर कई अलग-अलग तरीकों से स्वरूपित किया जाता है:

अगर रेंज ("ए 4")। वैल्यू <100 फिर रेंज ("ए 4")। फ़ॉन्ट। बोल्ड = ट्रू रेंज ("ए 4")। इंटीरियर। रंग = vbRed ElseIf रेंज ("ए 4")। वैल्यू <200 फिर रेंज ( "A4")। Font.Bold = False Range("A4").Interior.Color = vbYellow Else Range("A4").Font.Bold = False Range("A4").Interior.Color = vbGreen End if

उपरोक्त उदाहरण में, सेल ElseIf ब्लॉक में अन-बोल्ड है जहां मान 100 से कम नहीं है। आप कर सकते हैं घोंसला अगर इस तरह से डुप्लिकेटिंग कोड से बचने के लिए स्टेटमेंट:

अगर रेंज ("ए 4")। वैल्यू <100 फिर रेंज ("ए 4")। फ़ॉन्ट। बोल्ड = ट्रू रेंज ("ए 4")। इंटीरियर। रंग = वीबीरेड एल्स रेंज ("ए 4")। फ़ॉन्ट। बोल्ड = गलत ' फ़ॉन्ट को केवल एक बार खोलना यदि रेंज ("A4")। मान <200 फिर रेंज ("A4")। आंतरिक। रंग = vbYellow Else Range("A4")। आंतरिक। रंग = vbग्रीन एंड इफ एंड इफ

चर

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

यहां एक चर का उदाहरण दिया गया है और आप इसका उपयोग कैसे कर सकते हैं:

Sub ExtractSerialNumber() Dim strSerial As String ' यह वेरिएबल डिक्लेरेशन है 'As String' का अर्थ है कि यह वेरिएबल टेक्स्ट को होल्ड करने के लिए है। "' सेल A4 से सीरियल नंबर को पार्स आउट करें और इसे वेरिएबल strSerial = Mid(Range("A4").Value, 9) पर असाइन करें। अब सीरियल नंबर को दो बार पार्स करने के बजाय दो बार वैरिएबल का उपयोग करें रेंज (" B4").Value = strSerial MsgBox strSerial End Sub 

इस मूल उदाहरण में, चर 'strSerial' का उपयोग मिड () फ़ंक्शन का उपयोग करके सेल A4 से सीरियल नंबर निकालने के लिए किया जाता है, और फिर दो अन्य स्थानों पर उपयोग किया जाता है।

करने का मानक तरीका घोषित एक चर इस प्रकार है:

धुंधला जो भी नाम हो [जैसा प्रकार]

  • जो भी नाम हो वह नाम है जिसे आप अपना चर देने का निर्णय लेते हैं
  • प्रकार चर का डेटा प्रकार है

"[As प्रकार]” भाग छोड़ा जा सकता है - यदि ऐसा है, तो वेरिएबल को वैरिएंट प्रकार के रूप में घोषित किया जाता है, जिसमें किसी भी प्रकार का डेटा हो सकता है। पूरी तरह से मान्य होने पर, भिन्न प्रकारों से बचना चाहिए क्योंकि यदि आप सावधान नहीं हैं तो वे अप्रत्याशित परिणाम दे सकते हैं।

वहां नियमों परिवर्तनीय नामों के लिए। उन्हें या तो एक अक्षर या एक अंडरस्कोर वर्ण से शुरू करना होगा, इसमें रिक्त स्थान, अवधि, अल्पविराम, उद्धरण चिह्न या वर्ण नहीं हो सकते हैं "! @ और $ #"।

परिवर्तनीय घोषणाओं के कुछ उदाहरण यहां दिए गए हैं:

स्ट्रिंग के रूप में मंद strFilename 'अच्छा नाम शैली - वर्णनात्मक और उपसर्ग का उपयोग करता है Dim i As Long' खराब नाम शैली - केवल कुछ पुनरावृत्तियों के लिए स्वीकार्य Dim SalePrice As Double ' ठीक नाम शैली - वर्णनात्मक, लेकिन उपसर्ग का उपयोग नहीं करता है Dim iCounter' ठीक नाम - बहुत वर्णनात्मक नहीं, उपसर्ग का उपयोग करता है, कोई डेटा प्रकार नहीं

ये सभी उदाहरण कुछ भिन्न नामकरण योजनाओं का उपयोग करते हैं, लेकिन सभी मान्य हैं। एक चर नाम को उसके डेटा प्रकार के संक्षिप्त रूप (इनमें से कुछ उदाहरणों के अनुसार) के साथ उपसर्ग करना एक बुरा विचार नहीं है, क्योंकि यह आपके कोड को एक नज़र में अधिक पठनीय बनाता है।

VBA में बहुत से बुनियादी शामिल हैं जानकारी का प्रकार. सबसे लोकप्रिय लोगों में शामिल हैं:

  • डोरी (पाठ डेटा धारण करने के लिए प्रयुक्त)
  • लंबा (पूर्ण संख्याओं को धारण करने के लिए प्रयोग किया जाता है, अर्थात कोई दशमलव स्थान नहीं)
  • दोहरा (फ्लोटिंग-पॉइंट नंबर, यानी दशमलव स्थान रखने के लिए प्रयुक्त)

वीबीए आंतरिक डेटा प्रकारों की पूरी सूची यहां पाई जा सकती है: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary

रेंज वस्तु चर

वेरिएबल्स बनाना संभव है जो रेंज ऑब्जेक्ट्स को भी संदर्भित करते हैं। यह उपयोगी है यदि आप अपने कोड में एक विशिष्ट श्रेणी को कई स्थानों पर संदर्भित करना चाहते हैं - इस तरह यदि आपको सीमा बदलने की आवश्यकता है, तो आपको इसे केवल एक ही स्थान पर बदलने की आवश्यकता है।

जब आप एक रेंज ऑब्जेक्ट वेरिएबल बनाते हैं, तो आपको इसे एक रेंज के इंस्टेंस पर "सेट" करना होगा। उदाहरण के लिए:

रेंज सेट के रूप में मंद rMyRange rMyRange = रेंज ("A1: A10; D1: J10")

रेंज वैरिएबल असाइन करते समय "सेट" स्टेटमेंट को छोड़ने से एक त्रुटि होगी।

छोरों

लूप्स ऐसे ब्लॉक होते हैं जो अपने अंदर के कोड को एक निश्चित संख्या में दोहराते हैं। वे आपके द्वारा लिखे जाने वाले कोड की मात्रा को कम करने के लिए उपयोगी हैं, और आपको कोड का एक टुकड़ा लिखने की अनुमति देते हैं जो कई अलग-अलग संबंधित वस्तुओं पर समान क्रिया करता है।

अगले के लिए

अगले के लिए ब्लॉक एक लूप है जो एक निश्चित संख्या में बार-बार दोहराता है। यह एक चर का उपयोग an . के रूप में करता है इटरेटर यह गणना करने के लिए कि यह कितनी बार चला है, और इस इटरेटर चर का उपयोग लूप के अंदर किया जा सकता है। यह फॉर-नेक्स्ट लूप को कोशिकाओं या सरणियों के माध्यम से पुनरावृति के लिए बहुत उपयोगी बनाता है।

यहां एक उदाहरण दिया गया है जो पंक्तियों 1 से 100, कॉलम 1 में कोशिकाओं के माध्यम से लूप करता है और उनके मानों को पुनरावर्तक चर के मान पर सेट करता है:

मंद i जितना लंबा i = 1 से १०० कक्षों (i, १) के लिए। मान = i अगला i

लाइन "फॉर आई = 1 टू 100" का अर्थ है कि लूप 1 से शुरू होता है और 100 के बाद समाप्त होता है। आप अपनी पसंद की कोई भी शुरुआती और समाप्ति संख्या सेट कर सकते हैं; आप इन नंबरों के लिए चर का भी उपयोग कर सकते हैं।

डिफ़ॉल्ट रूप से, फॉर-नेक्स्ट लूप्स की गिनती 1 से होती है। यदि आप किसी भिन्न संख्या से गिनना चाहते हैं, तो आप लूप को स्पष्ट रूप से लिख सकते हैं। कदम खंड:

i = 5 से 100 के लिए चरण 5

यह लूप 5 से शुरू होगा, फिर हर बार लूप के दोहराए जाने पर 'i' में 5 जोड़ें (इसलिए 'i' दूसरी पुनरावृत्ति पर 10 होगा, तीसरे पर 15, और इसी तरह)।

का उपयोग करते हुए कदम, आप लूप को पीछे की ओर भी गिन सकते हैं:

मैं के लिए = १०० से १ चरण -1

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

डिम मैं जितना लंबा, j जितना लंबा i = 1 से 100 के लिए j = 1 से 100 सेल (i, j) के लिए। मान = i * j अगला j अगला i

यह आपको पंक्तियों और स्तंभों दोनों के माध्यम से लूप करने की अनुमति देता है।

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

i = 1 से 100 i = 1 अगला i . के लिए

इस लूप में, 'I' 1 पर रीसेट होने से पहले कभी भी 2 से आगे नहीं जाएगा, और लूप हमेशा के लिए दोहराएगा।

प्रत्येक के लिए

प्रत्येक के लिए ब्लॉक फॉर-नेक्स्ट ब्लॉक के समान हैं, सिवाय इसके कि वे काउंटर का उपयोग यह निर्दिष्ट करने के लिए नहीं करते हैं कि वे कितनी बार लूप करते हैं। इसके बजाय, प्रत्येक के लिए ब्लॉक वस्तुओं का एक 'संग्रह' लेता है (जैसे कोशिकाओं की एक श्रृंखला) और उस संग्रह में जितनी बार वस्तुएं होती हैं उतनी बार चलती हैं।

यहाँ एक उदाहरण है:

मंद r रेंज में प्रत्येक r के लिए रेंज("A15:J54") यदि r.Value> 0 फिर r.Font.Bold = True End यदि अगला r

रेंज ऑब्जेक्ट वेरिएबल 'आर' के उपयोग पर ध्यान दें। यह प्रत्येक लूप के लिए उपयोग किया जाने वाला इटरेटर वैरिएबल है - हर बार लूप के माध्यम से, 'r' को रेंज में अगले सेल का संदर्भ मिलता है।

एक्सेल वीबीए में प्रत्येक के लिए लूप का उपयोग करने का एक फायदा यह है कि आप बिना नेस्टिंग लूप के एक श्रेणी में सभी कोशिकाओं के माध्यम से लूप कर सकते हैं। यह आसान हो सकता है यदि आपको एक जटिल श्रेणी में सभी कक्षों के माध्यम से लूप करने की आवश्यकता है जैसे रेंज ("ए 1: डी 12, जे 13, एम 1: वाई 12").

प्रत्येक लूप के लिए एक नुकसान यह है कि जिस क्रम में कोशिकाओं को संसाधित किया जाता है उस पर आपका कोई नियंत्रण नहीं होता है। यद्यपि व्यवहार में एक्सेल क्रम में कोशिकाओं के माध्यम से लूप करेगा, सिद्धांत रूप में यह कोशिकाओं को पूरी तरह से यादृच्छिक क्रम में संसाधित कर सकता है। यदि आपको किसी विशेष क्रम में कक्षों को संसाधित करने की आवश्यकता है, तो आपको इसके बजाय For-Next लूप का उपयोग करना चाहिए।

डो-पाश

जबकि फॉर-नेक्स्ट ब्लॉक काउंटरों का उपयोग यह जानने के लिए करते हैं कि कब रुकना है, डो-पाश एक शर्त पूरी होने तक ब्लॉक चलते हैं। ऐसा करने के लिए, आप an . का उपयोग करते हैं जब तक खंड की शुरुआत या अंत में खंड, जो स्थिति का परीक्षण करता है और उस स्थिति के पूरा होने पर लूप को रोक देता है।

उदाहरण:

स्ट्रिंग str के रूप में मंद str = "बफ़ेलो" str = "बफ़ेलो बफ़ेलो बफ़ेलो बफ़ेलो बफ़ेलो बफ़ेलो बफ़ेलो" str = str & "" & "Buffalo" लूप रेंज ("A1")। वैल्यू = str

इस लूप में, "बफ़ेलो" को लूप के माध्यम से हर बार 'str' से जोड़ा जाता है, जब तक कि यह अपेक्षित वाक्य से मेल नहीं खाता। इस मामले में, परीक्षण लूप की शुरुआत में किया जाता है - यदि 'str' पहले से ही अपेक्षित वाक्य था (ऐसा इसलिए नहीं है क्योंकि हमने इसे इस तरह से शुरू नहीं किया है, लेकिन अगर) लूप भी नहीं चलेगा .

जब तक क्लॉज को अंत तक ले जाकर आप लूप को कम से कम एक बार चला सकते हैं, जैसे:

str = str & "" & "Buffalo" लूप str = "Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo Buffalo" तक करें

आप अपने मैक्रो में जो भी संस्करण समझ में आता है उसका उपयोग कर सकते हैं।

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

आगे क्या होगा?

एक बार जब आप मूल बातें समझ लेते हैं, तो कुछ और उन्नत तकनीकों को सीखने का प्रयास क्यों न करें? https://easyexcel.net/excel/learn-vba-tutorial/ पर हमारा ट्यूटोरियल आपके द्वारा यहां सीखी गई हर चीज पर आधारित होगा और इवेंट्स, यूजरफॉर्म्स, कोड ऑप्टिमाइजेशन, और बहुत कुछ के साथ आपके कौशल का विस्तार करेगा!

आप साइट के विकास में मदद मिलेगी, अपने दोस्तों के साथ साझा करने पेज

wave wave wave wave wave