वीबीए लिस्टबॉक्स - चयनित आइटम

यह आलेख प्रदर्शित करेगा कि एक्सेल वीबीए में सूची बॉक्स में चयनित आइटम के साथ कैसे काम किया जाए।

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

वीबीए फॉर्म में लिस्ट बॉक्स बनाना

VBA प्रपत्र में एक सूची बॉक्स बनाने के लिए, हमें सबसे पहले UserForm बनाने की आवश्यकता है।

एक बार जब आप अपना फॉर्म बना लेते हैं, तो टूलबॉक्स में लिस्ट बॉक्स कंट्रोल का चयन करें और फिर अपने फॉर्म पर लिस्ट बॉक्स बनाने के लिए ड्रैग करें।

सूची बॉक्स में मान जोड़ना

प्रपत्र की आरंभिक घटना में, निम्न कोड टाइप करें। सूची बॉक्स आपके एक्सेल वर्कशीट में सेल की श्रेणी में संग्रहीत मानों को उठाएगा।

123456 निजी उप UserForm_Initialize ()रेंज के रूप में मंद rngरेंज में प्रत्येक आरएनजी के लिए ("ए 1: ए 50")Me.lstState.AddItem rng.Valueअगला रंगअंत उप

जब हम फॉर्म चलाते हैं, तो सूची बॉक्स नीचे दिए गए चित्र में दिखाया जाएगा:

सूची बॉक्स से मूल्यों का चयन

डिफ़ॉल्ट रूप से, उपयोगकर्ता प्रपत्र में सूची बॉक्स में एकल मान का चयन किया जा सकता है। हालांकि सूची बॉक्स की बहु-चयन संपत्ति को बदलकर इसे संशोधित किया जा सकता है।

इसे चुनने के लिए सूची बॉक्स पर क्लिक करें, और फिर गुण विंडो में, बहु-चयन संपत्ति को बदलें 0-frmमल्टीसेलेक्ट सिंगल प्रति 1-frmमल्टी सेलेक्ट मल्टी।

अब जब हम फॉर्म चलाते हैं, तो हम लिस्ट बॉक्स में एक से अधिक विकल्प चुन सकते हैं।

अगर हम होने के विकल्प को बदलते हैं 2-frmMultiSelectExtended, इसका मतलब है कि हम मूल्यों में से एक का चयन कर सकते हैं, और फिर, SHIFT कुंजी दबाए रखते हुए, सूची में और नीचे एक और मान चुनें, और चयनित 2 मानों के बीच के सभी आइटम भी चुने जाएंगे।

वीबीए प्रोग्रामिंग | कोड जेनरेटर आपके लिए काम करता है!

VBA में चयनित मानों के साथ कार्य करना

सूची बॉक्स में बहु-चयन संपत्ति के लिए हमने जिस प्रकार के विकल्प का उपयोग किया है, उसके आधार पर हम VBA कोड में सूची बॉक्स में चयनित मान या मानों का उपयोग करने के कई तरीके हैं।

एक वैरिएबल को मान असाइन करना

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

सबसे पहले, हम प्रपत्र मॉड्यूल के शीर्ष पर एक मॉड्यूल स्तर चर बनाते हैं।

शब्दों के नीचे, विकल्प स्पष्ट, निम्न स्ट्रिंग चर बनाएँ।

1 स्ट्रिंग के रूप में मंद strState.

एक बार जब हम इस चर को बना लेते हैं, तो हम फॉर्म के पीछे के कोड पर जाने के लिए सूची बॉक्स पर डबल-क्लिक कर सकते हैं, या हम वीबीई संपादक में कोड बटन पर क्लिक कर सकते हैं।

सूची बॉक्स का क्लिक इवेंट स्वचालित रूप से बनाया जाएगा। को चुनिए आफ्टर_अपडेट घटना प्रपत्र उपलब्ध प्रक्रियाओं की सूची।

After_Update ईवेंट में, निम्न कोड टाइप करें:

123 निजी उप lstState_AfterUpdate ()strState = Me.lstStateअंत उप

नोट: आप क्लिक ईवेंट को हटा सकते हैं क्योंकि इसकी आवश्यकता नहीं है।

अब, यदि हम प्रपत्र चलाते हैं और सूची बॉक्स पर क्लिक करते हैं, तो चयनित मान चर में संग्रहीत हो जाएगा। इसका परीक्षण करने के लिए, हम कोड में एक BREAK बिंदु डाल सकते हैं।

अब जब हम फॉर्म चलाते हैं, अगर हम लिस्ट बॉक्स पर क्लिक करते हैं, तो कोड DEBUG मोड में चला जाएगा और हमारे ब्रेक प्वाइंट पर रुक जाएगा। यदि हम कोड में एक कदम आगे बढ़ने के लिए कीबोर्ड पर F8 दबाते हैं, तो वेरिएबल सूची में चयनित आइटम के साथ पॉप्युलेट हो जाएगा।

हम इस मान को वेरिएबल पर माउस रखकर देख सकते हैं।

या

हम तत्काल विंडो में मान देख सकते हैं।

VBA कोड उदाहरण खोज कर थक गए हैं? ऑटोमैक्रो का प्रयास करें!

एक्सेल में मान वापस करने के लिए कमांड बटन का उपयोग करना

सबसे पहले, हम एक्सेल में सूची बॉक्स में चयनित मान या मानों को वापस करने के लिए ओके बटन रखने के लिए फॉर्म पर एक कमांड बटन बनाते हैं।

कमांड बटन नियंत्रण का चयन करें, और फिर बटन बनाने के लिए अपने फॉर्म में क्लिक करें और खींचें।

गुण विंडो में, बटन का नाम बदलें सीएमडीओके, और बटन के कैप्शन और एक्सेलेरेटर को बदलें।

एक्सेलेरेटर का उद्देश्य उपयोगकर्ता के लिए बटन को सक्रिय करने के लिए कीबोर्ड का उपयोग करना है, इस मामले में ऑल्ट+ओ बटन को सक्रिय करेगा।

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

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

कमांड बटन के क्लिक इवेंट में निम्न कोड टाइप करें।

123 निजी उप cmdOK_Click ()रेंज ("ई 1") = स्ट्रस्टेटअंत उप

कोड लिस्टबॉक्स के आफ्टर_अपडेट इवेंट में घोषित वेरिएबल को उठाएगा और एक्सेल में रेंज को वैल्यू लौटाएगा।

वैकल्पिक रूप से, हम वेरिएबल का उपयोग किए बिना सीधे सूची बॉक्स से मान उठा सकते हैं।

123 निजी उप cmdOK_Click ()रेंज ("ई 1") = me.lstStateअंत उप

जब हम फॉर्म चलाते हैं, तो ओके बटन पर क्लिक करने पर चयनित मान एक्सेल में वापस आ जाएगा।

एकाधिक मानों का चयन

यदि हमने सूची बॉक्स की बहु-चयन संपत्ति को 1 या 2 पर सेट किया है जो हमें सूची में कई मानों का चयन करने की अनुमति देता है, तो इन मानों का चयन करने के लिए कोड थोड़ा अलग है।

NS आफ्टर_अपडेट सूची बॉक्स में मानों का चयन करते समय ईवेंट अब सक्रिय नहीं होता है - इसलिए हम इस ईवेंट का उपयोग नहीं कर सकते हैं।

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

कमांड बटन में ईवेंट पर क्लिक करें, निम्न कोड टाइप करें।

12345678910 निजी उप cmdOK_Click ()मंद x पूर्णांक के रूप मेंरेंज ("ई 1")। चुनेंx = 0 To Me.lstState.ListCount - 1 . के लिएअगर Me.lstState.Selected(x) = True तोएक्टिवसेल = Me.lstState.List(x)ActiveCell.Offset(1, 0)। चुनेंअगर अंतअगला एक्सअंत उप

अब जब हम फॉर्म चलाते हैं, तो केवल वे मान जो चुने गए हैं वे एक्सेल शीट पर वापस आ जाएंगे।

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

wave wave wave wave wave