लूप्स और वीबीए एक साथ चलते हैं, और अच्छे कारण के लिए भी। Microsoft Office ऑब्जेक्ट्स जैसे वर्कबुक, वर्कशीट और रेंज के साथ काम करते समय, लूप आपको उनमें से प्रत्येक के बीच सापेक्ष आसानी से टॉगल करने में मदद कर सकते हैं।
जबकि कमोबेश सभी VBA लूप ऑब्जेक्ट्स के साथ अच्छी तरह से काम करते हैं, 'प्रत्येक के लिए' लूप ऑब्जेक्ट संग्रह के साथ काम करने के लिए सबसे अच्छे विकल्पों में से एक है। यदि आप एक्सेल वीबीए के लिए नए हैं और प्रत्येक लूप के लिए मास्टर करना चाहते हैं, तो आप इनमें से कुछ उदाहरणों से जल्दी से सीख सकते हैं। यहां आपको इस सर्वोत्कृष्ट पाश के बारे में जानने की जरूरत है।
दिन का वीडियो सामग्री के साथ जारी रखने के लिए स्क्रॉल करें
प्रत्येक लूप के सिंटैक्स के लिए
प्रत्येक लूप सिंटैक्स के लिए एक्सेल VBA में लूप के लिए सामान्य के समान है। यहाँ वाक्य रचना है:
For each variable_name in object_collection
[statement]
[statement]
[statement]
Next variable_name
लूप 'प्रत्येक के लिए' कीवर्ड से शुरू होता है; आप ऑब्जेक्ट संग्रह के बाद किसी भी चर नाम का उपयोग कर सकते हैं। प्रत्येक लूप के लिए ऑब्जेक्ट सेल, रेंज, शीट और यहां तक कि वर्कबुक भी हो सकते हैं। ऐसी है इस पाश की शोभा; यह आपको विभिन्न एक्सेल संग्रहों के साथ काम करने की सुविधा देता है।
लूप प्रत्येक संग्रह मान के माध्यम से चक्र करता है और परिभाषित चर नाम में संदर्भ संग्रहीत करता है। निष्पादन के बाद, VBA लूप के भीतर संग्रहीत कथनों को निष्पादित करता है और संग्रह में अगली वस्तु ( अगला कीवर्ड यहाँ मददगार है)। आइए एक बुनियादी उदाहरण के साथ कोड संरचना को समझते हैं।
एक्सेल वीबीए में प्रत्येक लूप के लिए कैसे उपयोग करें
मान लीजिए कि आप कक्ष A1 से A10 में कोई संख्या प्रिंट करना चाहते हैं। सबसे अच्छा तरीका प्रत्येक लूप के लिए रेंज फ़ंक्शन के साथ उपयोग करना है और कोड को आवश्यक कार्य करने दें। यहां बताया गया है कि आप यह सरल कार्य कैसे कर सकते हैं:
- दबाकर VBA कोड संपादक खोलें सब कुछ + F11 .
- क्लिक करके एक मॉड्यूल डालें मापांक के भीतर विकल्प डालना टैब।
- कोड संपादक मॉड्यूल विंडो में उप () कमांड का उपयोग करके एक उप-दिनचर्या बनाएं। उप-दिनचर्या को एक सार्थक नाम देना सुनिश्चित करें। इस उदाहरण के लिए, आप नाम का उपयोग कर सकते हैं for_each_loop .
अब जब मूल बातें खत्म हो गई हैं, तो कोड लिखना शुरू करने का समय आ गया है। उप-दिनचर्या के भीतर, निम्न आदेशों में टाइप करें:
Dim cell as range
For each cell in Sheets("Sheet1").Range("A1:A10")
cell.value = 10
Next cell
जब कोड निष्पादित होता है, तो सी चर A1 के मान को संग्रहीत करेगा। अगला, जैसा कि यह लूप के भीतर स्टेटमेंट पर जाता है, यह कमांड का मूल्यांकन करता है और परिभाषित सेल में 10 का मान इनपुट करता है, यानी सेल A1।
एक ही समय में यूट्यूब देखें
अंत में, जैसे ही यह नेक्स्ट कीवर्ड पर जाता है, यह अगले मान, यानी, सेल A2 पर चला जाता है। लूप सेल A10 तक पहुंचने तक चलता है। यह अंतिम आउटपुट है:
ऑब्जेक्ट्स के साथ लूप का उपयोग करना: सेल, शीट्स और वर्कबुक्स
एक्सेल के तीन मुख्य ऑब्जेक्ट प्रकार हैं जिनके साथ आप नियमित रूप से काम करते हैं। ये सेल, शीट और वर्कबुक हैं। यहां बताया गया है कि आप तीनों ऑब्जेक्ट प्रकारों के साथ लूप का उपयोग कैसे कर सकते हैं।
सेल और लूप के साथ मिलकर काम करना
मान लीजिए कि आप पत्रक1 में कक्षों की श्रेणी में एक मान और कुछ स्वरूपण शर्तें जोड़ना चाहते हैं। पहले चरण के रूप में, आपको लूप के भीतर शर्तों को परिभाषित करने की आवश्यकता है, इसके बाद स्वरूपण आदेश।
एक सब-रूटीन में निम्न कोड टाइप करें।
Sub for_each_loop()
Dim c As Range
For Each c In Sheets("Sheet1").Range("A1:A10")
With c
.Value = 10
.Font.Color = vbRed
.Font.Bold = True
.Font.Strikethrough = True
End With
Next c
End Sub
साथ एक विशिष्ट वस्तु के साथ कई कार्य करते समय फ़ंक्शन उपयोगी होता है। चूँकि आप c चर के साथ कार्यों की एक श्रृंखला करना चाहते हैं, आप उन सभी को फ़ंक्शन के साथ..end का उपयोग करके जोड़ सकते हैं।
लूप c के मान को प्रत्येक सेल मान के बराबर करता है और मान को 10 के रूप में इनपुट करता है। इसके अतिरिक्त, यह सेल के रंग को लाल रंग में बदलता है, मान को बोल्ड करता है, और इसके माध्यम से स्ट्राइक करता है। एक बार जब यह सभी चरणों को पूरा कर लेता है, तो यह श्रेणी में अगले परिभाषित मान पर चला जाता है।
शीट्स को नियंत्रित करने के लिए लूप का उपयोग करना
उपरोक्त उदाहरण के समान, आप शीट्स को नियंत्रित करने के लिए प्रत्येक लूप के लिए उपयोग कर सकते हैं। वीबीए का उपयोग कर शीट 1 के नाम को शीट 3 में बदलने के बारे में कैसे?
आप वीबीए का उपयोग कर एक्सेल में मौजूदा वर्कशीट का नाम बदलने के लिए निम्न कोड का उपयोग कर सकते हैं:
Sub for_each_loop_sheets()
For Each sht In ThisWorkbook.Sheets
If sht.Name = "Sheet1" Then
sht.Name = "Sheet3"
End If
Next sht
End Sub
कार्यपुस्तिका के भीतर प्रत्येक शीट के माध्यम से कोड लूप करता है और प्रत्येक शीट के नाम की जांच करता है। यदि यह शीट1 नाम से मिलता है, तो यह इसे शीट3 में बदल देता है। यह कार्यपुस्तिका के भीतर शेष शीट्स, यदि कोई हो, के माध्यम से आगे बढ़ता है। एक बार जब कोड निष्पादन अंतिम शीट तक पहुँच जाता है, तो यह लूप और सब-रूटीन से बाहर निकल जाता है।
कुछ अन्य सामान्य उपयोगों में से, आप कर सकते हैं VBA का उपयोग करके कई कार्यपत्रकों को मर्ज करें और लूप का उपयोग करके सामग्री को एक शीट में अपडेट करें।
लूप के साथ कार्यपुस्तिकाओं में टॉगल करें
अंत में, आप प्रत्येक लूप के लिए विभिन्न कार्यपुस्तिकाओं के माध्यम से टॉगल करने और विशिष्ट कार्य करने के लिए उपयोग कर सकते हैं। आइए इस फ़ंक्शन को एक उदाहरण के साथ प्रदर्शित करें।
आप तीन नई कार्यपुस्तिकाओं को जोड़ने और सभी खुली हुई पुस्तकों को एक साथ बंद करने के लिए VBA कमांड का उपयोग कर सकते हैं। यहां बताया गया है कि आप इसे कैसे कर सकते हैं:
Sub loop_wrkbook()
Dim wrkbook as workbook
Workbooks.Add
Workbooks.Add
Workbooks.Add
For Each wrkbook In Workbooks
wrkbook.
Next wrkbook
End Sub