नियंत्रण (Controls) का उपयोग प्रपत्रों के बाहर भी किया जा सकता है। निम्नलिखित उदाहरण में, हम सीधे वर्कशीट पर नियंत्रणों का उपयोग करेंगे।
ध्यान दें कि वर्कशीट पर स्थित एक विशेष नियंत्रण को संशोधित करने के लिए "डिज़ाइनर मोड" ("Design mode") को सक्रिय किया जाना चाहिए (और इस नियंत्रण का उपयोग करने के लिए इसे निष्क्रिय भी किया जाना चाहिए)।
अगला उदाहरण देखने से पहले, आइए इसे देखें:
अब, हम कोशिकाओं में एक पृष्ठभूमि रंग जोड़ना चाहते हैं और 30 पंक्तियों और 10 स्तंभों के परिभाषित क्षेत्र में स्लाइडर की स्थिति के आधार पर उनका चयन करना चाहते हैं।
स्क्रीन को स्क्रॉल करने के लिए लंबवत स्लाइडर के गुण इस प्रकार हैं:
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
यह हमारे अगले उदाहरण के लिए प्रारंभिक बिंदु है:
आप 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