TOP

VBA-पाठ 12.3. नियंत्रण (Controls)

नियंत्रण (Controls) का उपयोग प्रपत्रों के बाहर भी किया जा सकता है। निम्नलिखित उदाहरण में, हम सीधे वर्कशीट पर नियंत्रणों का उपयोग करेंगे।

ध्यान दें कि वर्कशीट पर स्थित एक विशेष नियंत्रण को संशोधित करने के लिए "डिज़ाइनर मोड" ("Design mode") को सक्रिय किया जाना चाहिए (और इस नियंत्रण का उपयोग करने के लिए इसे निष्क्रिय भी किया जाना चाहिए)।


स्क्रॉलबार (स्क्रॉलबार)

अगला उदाहरण देखने से पहले, आइए इसे देखें:

अब, हम कोशिकाओं में एक पृष्ठभूमि रंग जोड़ना चाहते हैं और 30 पंक्तियों और 10 स्तंभों के परिभाषित क्षेत्र में स्लाइडर की स्थिति के आधार पर उनका चयन करना चाहते हैं।

स्क्रीन को स्क्रॉल करने के लिए लंबवत स्लाइडर के गुण इस प्रकार हैं:

  • Min : 1
  • Max : 30 (30 पंक्तियाँ)
  • Value : स्लाइडर स्थिति (इस मामले में, 1 और 30 के बीच)
  • Max : 10 को छोड़कर, क्षैतिज स्लाइडर समान है।

    निम्नलिखित वह कोड है जो लंबवत स्लाइडर (Value) का मान बदलने पर चलेगा:

     'कोशिकाओं में धूसर पृष्ठभूमि
     Cells.Interior.Color = RGB(240, 240, 240)
    
     'हम रंग लगाते हैं और एक सेल का चयन करते हैं
     With Cells(ScrollBar_vertical.Value, ActiveCell.Column) 'वैल्यू (Value) का उपयोग करके सेल को परिभाषित करें
         .Interior.Color = RGB(255, 220, 100) 'हम नारंगी रंग का उपयोग करते हैं
         .Select 'हम एक सेल का चयन करते हैं
     End With
    

    यह कोड तब ट्रिगर होता है जब Change और Scroll इवेंट घटित होते हैं और निर्देशों को निष्पादित करता है, भले ही हमने स्लाइडर के किस भाग पर क्लिक किया हो।

    वर्टिकल स्लाइडर के लिए कोड निम्नलिखित है:

    Private Sub vertical_bar()
         'कोशिकाओं के लिए एक ग्रे पृष्ठभूमि लागू करें
         Cells.Interior.Color = RGB(240, 240, 240)
         
         'पृष्ठभूमि लागू करें और सेल का चयन करें
         With Cells(ScrollBar_vertical.Value, ActiveCell.Column)
             .Interior.Color = RGB(255, 220, 100) 'नारंगी
             .Select 'हम एक सेल का चयन करते हैं
         End With
    End Sub
    
    Private Sub ScrollBar_vertical_Change()
         vertical_bar
    End Sub
    
    Private Sub ScrollBar_vertical_Scroll()
         vertical_bar
    End Sub
    

    और यहाँ, बदले में, क्षैतिज स्लाइडर के लिए कोड है:

    Private Sub horizontal_bar()
         'कोशिकाओं के लिए एक ग्रे पृष्ठभूमि लागू करें
         Cells.Interior.Color = RGB(240, 240, 240)
    
         'पृष्ठभूमि लागू करें और सेल का चयन करें
         With Cells(ActiveCell.Row, ScrollBar_horizontal.Value)
             .Interior.Color = RGB(255, 220, 100) 'नारंगी
             .Select 'हम एक सेल का चयन करते हैं
         End With
    End Sub
    
    Private Sub ScrollBar_horizontal_Change()
         horizontal_bar
    End Sub
    
    Private Sub ScrollBar_horizontal_Scroll()
         horizontal_bar
    End Sub
    

    ड्रॉपडाउन और लिस्टबॉक्स (ComboBox और ListBox)

    यह हमारे अगले उदाहरण के लिए प्रारंभिक बिंदु है:

    आप Excel उदाहरण फ़ाइल डाउनलोड कर सकते हैं: userform4.xls

    फॉर्म चलाते समय, हम चाहते हैं कि 4 देशों को ड्रॉपडाउन सूची में लोड किया जाए (AddItem विधि का उपयोग करके):

    Private Sub UserForm_Initialize()
         For i = 1 To 4 '=> 4 देशों को भरने के लिए
            ComboBox_Country.AddItem Cells(1, i) 'हम एक लूप का उपयोग करके A1 से A4 तक कोशिकाओं के मान जोड़ते हैं
        Next
    End Sub
    

    जब ड्रॉपडाउन का मान बदलता है, तो हम पिछले वाले के समान लूप का उपयोग करके चयनित देश के शहरों को जोड़ना चाहते हैं।

    ऐसा करने के लिए, हमें कॉलम की संख्या, साथ ही इस कॉलम में शहरों (पंक्तियों) की संख्या जानने की आवश्यकता है।

    ListIndex प्रॉपर्टी में ड्रॉप-डाउन सूची में चयनित आइटम की अनुक्रम संख्या शामिल है (Value के विपरीत, जिसमें सूची आइटम का मूल्य शामिल है)। ध्यान दें कि ListIndex संख्या 0 से शुरू होता है।

    कॉलम संख्या इसके माध्यम से प्राप्त की जाती है:

    column_number = ComboBox_Country.ListIndex + 1
    

    किसी विशिष्ट देश के लिए चयनित कॉलम में पंक्तियों की संख्या प्राप्त करने के लिए, हम अंतिम गैर-रिक्त सेल की संख्या पा सकते हैं:

    rows_number = Cells(1, column_number).End(xlDown).Row
    

    इस जानकारी का उपयोग करके, अब शहरों को सूची में जोड़ने के लिए एक लूप बनाना संभव है:

    Private Sub ComboBox_Country_Change()
         'सूची साफ़ करना (अन्यथा, शहरों को तुरंत जोड़ दिया जाएगा)
         ListBox_Cities.Clear
         
         Dim column_number As Integer, rows_number As Integer
         
         'चयनित तत्व की अनुक्रम संख्या (ListIndex 0 से प्रारंभ होती है) :
         column_number = ComboBox_Country.ListIndex + 1
         'देशों के साथ चयनित कॉलम में पंक्तियों की संख्या:
         rows_number = Cells(1, column_number).End(xlDown).Row
    
         For i = 2 To rows_number '=> सूची को शहरों से भरना
            ListBox_Cities.AddItem Cells(i, column_number)
         Next
    End Sub
    

    नोट: हम कोड को छोटा कर सकते हैं, लेकिन इससे यह कम पठनीय हो जाएगा:

    Private Sub ComboBox_Country_Change()
         ListBox_Cities.Clear
         For i = 2 To Cells(1, ComboBox_Country.ListIndex + 1).End(xlDown).Row
             ListBox_Cities.AddItem Cells(i, ComboBox_Country.ListIndex + 1)
         Next
    End Sub
    

    हमारे द्वारा चुना गया शहर "चॉइस" टेक्स्ट फ़ील्ड ("Choice") में दर्ज किया जाएगा:

    Private Sub ListBox_Cities_Click()
         TextBox_Choice.Value = ListBox_Cities.Value
    End Sub
    

    आप इस Excel फ़ाइल में एक तैयार उदाहरण देख सकते हैं: userform4b.xls