VBA - यूजरफॉर्म में कैस्केडिंग कॉम्बो बॉक्स कैसे बनाएं

VBA - यूजरफॉर्म में कैस्केडिंग कॉम्बो बॉक्स कैसे बनाएं

परिचय

इस अनुच्छेद में आप सीखेंगे कि अप्रत्यक्ष विधि का उपयोग करके कैस्केडिंग कॉम्बो बॉक्स कैसे भरें।

आवश्यक शर्तें

  • 1 कार्यपुस्तिका
  • 1 उपयोगकर्ता
  • 3 कॉम्बोक्स।

आप यहां एक नमूना कार्यपुस्तिका भी डाउनलोड कर सकते हैं: //cjoint.com/14au/DHhootCLYVh.htm

एक्सेल के तहत नामों का प्रबंधन

Excel कार्यपुस्तिका में नामों को परिभाषित करने के लिए, आप या तो:
  • Excel 2007 या पूर्व संस्करण: सम्मिलित करें> नाम> परिभाषित करें
  • Excel 2010 से: रिबन फ़ार्मुलों> एक ​​नाम परिभाषित करें।

कॉम्बोक्स के लिए कोड

हम चाहते हैं कि निम्नलिखित घटित हों:
  • UserForm लोड करने पर, ComboBox1 भरा जाएगा।
  • अन्य कॉम्बो बॉक्स पहले वाले के मूल्यों के आधार पर भरे जाएंगे।

पहली सूची भरना

कार्यपुस्तिका की नामित श्रेणी की सामग्री के साथ कॉम्बो बॉक्स भरने के लिए, सिंटैक्स है:
  • ComboBox1.List = Application.Transpose (रेंज ("मोनोमॉम"))

कॉम्बो बॉक्स साफ़ करने के लिए:

  • Combobox1.Clear

UserForm की लोडिंग में पहली ड्रॉपडाउन सूची भरने के लिए हमें क्या कोड देता है:

 निजी उप UserForm_Initialize () ComboBox1.Clear ComboBox1.List = Application.Transpose (रेंज ("मूल्य")) ComboBox2.Clear ComboBox3.Clear अंतिम उप 

दूसरी सूची भरना

जब पहली ड्रॉप-डाउन सूची में एक मूल्य का चयन किया जाता है, तो यह (कॉम्बो बॉक्स में दिखाया गया पाठ) एक कार्यपुस्तिका के नाम के अनुरूप होगा।

नामित श्रेणी की कोशिकाओं की सामग्री को प्रदर्शित करने के लिए, हम बदलें घटना का उपयोग करेंगे:

 निजी उप ComboBox1_Change () 'Combobox département बग से बचें जब उपयोगकर्ता ने ComboBox1.Value = "ComboBox1 की सामग्री को नष्ट कर दिया तो उत्पन्न बग से बचें।" "फिर उप ComboBox2 से बाहर निकलें। ComboBox3 से साफ करें। ComboBox2.List = Application.Transpose (Range (NomRange) को समाप्त करें। उप 

तीसरे कॉम्बो बॉक्स के लिए:

 निजी उप ComboBox2_Change () 'कॉम्बोक्स कम्यूनिकेशंस अगर ComboBox2.Value = "" तो उप कॉम्बो बॉक्स 3 से बाहर निकलें। ComboBox3.List = Application.Transpose (रेंज (NomRange)) समाप्ति उप को समाप्त करें 

आम बग्स

सीमा

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

 नामदिफेनी (स्ट्रिंग के रूप में नामांकित) नाम के रूप में बूलियन डिम नॉम्स के रूप में नामवर्दीनी = प्रत्येक शब्दों के लिए इस वॉर्कबुक में गलत। नाम यदि नाम। नाम = नाम तो नोमडीफिनी = सही: एक्सॉन फंक्शन अगला नाम अंत 

इनपुट त्रुटि

जैसा कि आप नमूना फ़ाइल में देखेंगे, नाम परिभाषित करना विशेष पात्रों या रिक्त स्थान को ध्यान में नहीं रखता है। कुछ स्थितियों में, आपको चर को संपादित करने की आवश्यकता हो सकती है:

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

 कारकेस्पेक (स्ट्रिंग के रूप में नामित) स्ट्रिंग के रूप में कारसेक = रिप्लेसमेंट (नोम, "", "_") कारास्पेस = रिप्लेसमेंट (कारकैस्पेक, "-", "_") एंड फंक्शन 

पूरा कोड

 विकल्प स्पष्ट निजी उप UserForm_Initialize () ComboBox1.Clear ComboBox1.List = Application.Transpose (Range ("Dep")) ComboBox2.Clear ComboBox3.Clear अंत उप सबमबॉक्स 1_Change () 'Combobox département यदि ComboBox1.Value =। Sub ComboBox2.Clear ComboBox3.Clear Dim NomRange स्ट्रिंग के रूप में NomRange = CaracSpec (ComboBox1.Value) यदि NomDefini (NomRange) तो ComboBox2.Le = Application (ट्रांसक्रिप्शन (रेंज (NomRange))) Elbo ComboBox2.AddItem "Aucune" का उपयोग करें। अंत यदि उप निजी निजी उप ComboBox2_Change () 'कॉम्बोबॉक्स कम्यूनिकेशंस यदि ComboBox2.Value = "" तो उप ComboBox3 से बाहर निकलें। नामांकित स्ट्रिंग के रूप में डिम नोमरेंज = CarbSpec (ComboBox2.Value) यदि NomDefini (NomRange) और विमोचन। (रेंज (घुमंतू)) Else ComboBox3.AddItem "" "Aucune rue" "" यदि अंत में उप फ़ंक्शन नामदिफेनी (स्ट्रिंग के रूप में नामांकित) नाम के रूप में बूलियन डिम नोम के रूप में नामांकित शब्द = प्रत्येक के लिए गलतियाँ। इस पुस्तक में कोई भी नाम नहीं हैं। नोम फिर नोमडीनी = ट्रू: एग्जिट फंक्शन नेक्स्ट नम्स एंड फंक्शन फंक्शन काराक कल्पना (स्ट्रिंग के रूप में नाम) स्ट्रिंग के रूप में CaracSpec = बदलें (Nom (", ", "_") CaracSpec = बदलें (CaracSpec, "-", "_") अंतिम फ़ंक्शन 

डाउनलोड लिंक

इस लिंक पर नमूना पत्र डाउनलोड करें: //cjoint.com/?DHhootCLYVh

VBA - यूजरफॉर्म में कैस्केडिंग कॉम्बो बॉक्स कैसे बनाएं

परिचय

इस अनुच्छेद में आप सीखेंगे कि अप्रत्यक्ष विधि का उपयोग करके कैस्केडिंग कॉम्बो बॉक्स कैसे भरें।

आवश्यक शर्तें

  • 1 कार्यपुस्तिका
  • 1 उपयोगकर्ता
  • 3 कॉम्बोक्स।

आप यहां एक नमूना कार्यपुस्तिका भी डाउनलोड कर सकते हैं: //cjoint.com/14au/DHhootCLYVh.htm

एक्सेल के तहत नामों का प्रबंधन

Excel कार्यपुस्तिका में नामों को परिभाषित करने के लिए, आप या तो:
  • Excel 2007 या पूर्व संस्करण: सम्मिलित करें> नाम> परिभाषित करें।
  • Excel 2010 से: रिबन फ़ार्मुलों> एक ​​नाम परिभाषित करें।

कॉम्बोक्स के लिए कोड

हम चाहते हैं कि निम्नलिखित घटित हों:
  • UserForm लोड करने पर, ComboBox1 भरा जाएगा।
  • अन्य कॉम्बो बॉक्स पहले वाले के मूल्यों के आधार पर भरे जाएंगे।

पहली सूची भरना

कार्यपुस्तिका की नामित श्रेणी की सामग्री के साथ कॉम्बो बॉक्स भरने के लिए, सिंटैक्स है:
  • ComboBox1.List = Application.Transpose (रेंज ("मोनोमॉम"))

कॉम्बो बॉक्स साफ़ करने के लिए:

  • Combobox1.Clear

UserForm की लोडिंग में पहली ड्रॉपडाउन सूची भरने के लिए हमें क्या कोड देता है:

 निजी उप UserForm_Initialize () ComboBox1.Clear ComboBox1.List = Application.Transpose (रेंज ("मूल्य")) ComboBox2.Clear ComboBox3.Clear अंतिम उप 

दूसरी सूची भरना

जब पहली ड्रॉप-डाउन सूची में एक मान का चयन किया जाता है, तो यह (कॉम्बो बॉक्स में दिखाया गया पाठ) एक वर्कबुक नाम से मेल खाता है।

नामित श्रेणी की कोशिकाओं की सामग्री को प्रदर्शित करने के लिए, हम बदलें घटना का उपयोग करेंगे:

 निजी उप ComboBox1_Change () 'Combobox département बग से बचें जब उपयोगकर्ता ने ComboBox1.Value = "ComboBox1 की सामग्री को नष्ट कर दिया तो उत्पन्न बग से बचें।" "फिर उप ComboBox2 से बाहर निकलें। ComboBox3 से साफ करें। ComboBox2.List = Application.Transpose (Range (NomRange) को समाप्त करें। उप 

तीसरे कॉम्बो बॉक्स के लिए:

 निजी उप ComboBox2_Change () 'कॉम्बोक्स कम्यूनिकेशंस अगर ComboBox2.Value = "" तो उप कॉम्बो बॉक्स 3 से बाहर निकलें। ComboBox3.List = Application.Transpose (रेंज (NomRange)) समाप्ति उप को समाप्त करें 

आम बग्स

सीमा

कॉम्बो बॉक्स में दर्ज नाम किसी भी कार्यपुस्तिका के नाम से मेल नहीं खाता है क्योंकि इसे अभी तक परिभाषित नहीं किया गया है। इस समस्या को दरकिनार करने के लिए, हम एक छोटा फ़ंक्शन बनाएंगे। आईटी इस

भूमिका कार्यपुस्तिका के सभी नामों के माध्यम से लूप करना है:

 नामदिफेनी (स्ट्रिंग के रूप में नामांकित) नाम के रूप में बूलियन डिम नॉम्स के रूप में नामवर्दीनी = प्रत्येक शब्दों के लिए इस वॉर्कबुक में गलत। नाम यदि नाम। नाम = नाम तो नोमडीफिनी = सही: एक्सॉन फंक्शन अगला नाम अंत 

इनपुट त्रुटि

जैसा कि आप नमूना फ़ाइल में देखेंगे, नाम परिभाषित करना विशेष पात्रों या रिक्त स्थान को ध्यान में नहीं रखता है। कुछ स्थितियों में, आपको चर को संपादित करने की आवश्यकता हो सकती है:

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

 कारकेस्पेक (स्ट्रिंग के रूप में नामित) स्ट्रिंग के रूप में कारसेक = रिप्लेसमेंट (नोम, "", "_") कारास्पेस = रिप्लेसमेंट (कारकैस्पेक, "-", "_") एंड फंक्शन 

पूरा कोड

 विकल्प स्पष्ट निजी उप UserForm_Initialize () ComboBox1.Clear ComboBox1.List = Application.Transpose (Range ("Dep")) ComboBox2.Clear ComboBox3.Clear अंत उप सबमबॉक्स 1_Change () 'Combobox département यदि ComboBox1.Value =। Sub ComboBox2.Clear ComboBox3.Clear Dim NomRange स्ट्रिंग के रूप में NomRange = CaracSpec (ComboBox1.Value) यदि NomDefini (NomRange) तो ComboBox2.Le = Application (ट्रांसक्रिप्शन (रेंज (NomRange))) Elbo ComboBox2.AddItem "Aucune" का उपयोग करें। अंत यदि उप निजी निजी उप ComboBox2_Change () 'कॉम्बोबॉक्स कम्यूनिकेशंस यदि ComboBox2.Value = "" तो उप ComboBox3 से बाहर निकलें। नामांकित स्ट्रिंग के रूप में डिम नोमरेंज = CarbSpec (ComboBox2.Value) यदि NomDefini (NomRange) और विमोचन। (रेंज (घुमंतू)) Else ComboBox3.AddItem "" "Aucune rue" "" यदि अंत में उप फ़ंक्शन नामदिफेनी (स्ट्रिंग के रूप में नामांकित) नाम के रूप में बूलियन डिम नोम के रूप में नामांकित शब्द = प्रत्येक के लिए गलतियाँ। इस पुस्तक में कोई भी नाम नहीं हैं। नोम फिर नोमडीनी = ट्रू: एग्जिट फंक्शन नेक्स्ट नम्स एंड फंक्शन फंक्शन काराक कल्पना (स्ट्रिंग के रूप में नाम) स्ट्रिंग के रूप में CaracSpec = बदलें (Nom (", ", "_") CaracSpec = बदलें (CaracSpec, "-", "_") अंतिम फ़ंक्शन 

डाउनलोड लिंक

इस लिंक पर नमूना पत्र डाउनलोड करें: //cjoint.com/?DHhootCLYVh
पिछला लेख अगला लेख

शीर्ष युक्तियाँ