TOP
VBA-पाठ 12.4. नियंत्रण तत्व (व्यायाम)
आइए अब नियंत्रण (Controls) का उपयोग करने का अभ्यास करने के लिए एक छोटा सा अभ्यास देखें।
तैयार प्रपत्र और नियंत्रण तत्वों वाली एक फ़ाइल है। हमें ऐसा कोड लिखने की ज़रूरत है जो सभी तत्वों को काम में लाए ताकि उपयोगकर्ता फ़ॉर्म के साथ इंटरेक्शन के माध्यम से हमारे तात्कालिक डेटाबेस को पॉप्युलेट कर सके।
यहां डाउनलोड करने के लिए Excel फ़ाइल है: controls_exercise.xls
अब यह स्पष्ट होना चाहिए कि यहां लक्ष्य फॉर्म का उपयोग करके तालिका को भरना है।
विचार करने योग्य कुछ बिंदु:
देशों की सूची दूसरी शीट की सूची पर आधारित है;
नया संपर्क जोड़ने से पहले नियंत्रण तत्वों के मूल्यों की जाँच करना;
मान दर्ज करने के बाद, प्रपत्र को बंद किए बिना नियंत्रण के प्रारंभिक मान लौटाना।
समस्या को हल करने के तरीकों में से एक
सबसे पहले, हमें उपयोग को आसान बनाने के लिए अपने फॉर्म की Zoom प्रॉपर्टी को 120 तक बढ़ाना होगा:
हमने पहले ही चेकिंग विकल्प बटन (नियंत्रण पर पहले पाठ में) को कवर कर लिया है, इसलिए यहां हम एक सरल समाधान का उपयोग करते हैं।
"श्रीमती" को डिफ़ॉल्ट रूप से चुना जाता है (संपत्ति Value: True), यानी, इसे चुनते समय हम पते की जांच नहीं करेंगे।
बंद करें बटन
- Private Sub CommandButton_Close_Click()
- Unload Me
- End Sub
Private Sub CommandButton_Close_Click()
Unload Me
End Sub
ड्रॉप-डाउन सूची की सामग्री
- Private Sub UserForm_Initialize()
- For i = 1 To 252
- ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)
- Next
- End Sub
Private Sub UserForm_Initialize() 'फॉर्म खुला होने पर सूची लोड हो रही है
For i = 1 To 252 'देश वर्कशीट से 252 देशों की सूची तैयार करना
ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)
Next
End Sub
नियंत्रण तत्वों की जाँच करना
यदि कोई नियंत्रण खाली है तो एक सरल समाधान एक संवाद प्रदर्शित करना होगा।
- Private Sub CommandButton_Add_Click()
- If TextBox_Last_Name.Value = "" Or TextBox_First_Name.Value = "" Or TextBox_Address.Value = "" Or TextBox_Place.Value = "" Or ComboBox_Country.Value = "" Then
- MsgBox "Form incomplete"
- Else
-
- End If
- End Sub
Private Sub CommandButton_Add_Click()
If TextBox_Last_Name.Value = "" Or TextBox_First_Name.Value = "" Or TextBox_Address.Value = "" Or TextBox_Place.Value = "" Or ComboBox_Country.Value = "" Then
MsgBox "Form incomplete"
Else
'यहां संपर्क दर्ज करने के निर्देश...
End If
End Sub
लेकिन इसे थोड़ा और जटिल बनाने के लिए, प्रत्येक तत्व की अलग से जाँच की जानी चाहिए, और यदि उनमें से कोई भी खाली है, तो उसके नाम का रंग () बदलकर लाल कर देना चाहिए:
- Private Sub CommandButton_Add_Click()
-
- Label_Last_Name.ForeColor = RGB(0, 0, 0)
- Label_First_Name.ForeColor = RGB(0, 0, 0)
- Label_Address.ForeColor = RGB(0, 0, 0)
- Label_Place.ForeColor = RGB(0, 0, 0)
- Label_Country.ForeColor = RGB(0, 0, 0)
-
-
- If TextBox_Last_Name.Value = "" Then
- Label_Last_Name.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_First_Name.Value = "" Then
- Label_First_Name.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_Address.Value = "" Then
- Label_Address.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_Place.Value = "" Then
- Label_Place.ForeColor = RGB(255, 0, 0)
- ElseIf ComboBox_Country.Value = "" Then
- Label_Country.ForeColor = RGB(255, 0, 0)
- Else
-
- End If
- End Sub
Private Sub CommandButton_Add_Click()
'नाम का रंग काला पर सेट करें
Label_Last_Name.ForeColor = RGB(0, 0, 0)
Label_First_Name.ForeColor = RGB(0, 0, 0)
Label_Address.ForeColor = RGB(0, 0, 0)
Label_Place.ForeColor = RGB(0, 0, 0)
Label_Country.ForeColor = RGB(0, 0, 0)
'सामग्री नियंत्रण
If TextBox_Last_Name.Value = "" Then 'यदि कुछ भी निर्दिष्ट नहीं है...
Label_Last_Name.ForeColor = RGB(255, 0, 0) 'शीर्षक का रंग लाल पर सेट करें
ElseIf TextBox_First_Name.Value = "" Then
Label_First_Name.ForeColor = RGB(255, 0, 0)
ElseIf TextBox_Address.Value = "" Then
Label_Address.ForeColor = RGB(255, 0, 0)
ElseIf TextBox_Place.Value = "" Then
Label_Place.ForeColor = RGB(255, 0, 0)
ElseIf ComboBox_Country.Value = "" Then
Label_Country.ForeColor = RGB(255, 0, 0)
Else
'यहां संपर्क दर्ज करने के निर्देश...
End If
End Sub
डेटा सम्मिलित करना
उपरोक्त कोड में दर्शाए गए स्थान पर निम्नलिखित कोड डाला जाना चाहिए (टिप्पणियाँ देखें):
- Dim row_number As Integer, salutation As String
-
-
- For Each salutation_button In Frame_Salutation.Controls
- If salutation_button.Value Then
- salutation = salutation_button.Caption
- End If
- Next
-
-
- row_number = Range("A65536").End(xlUp).Row + 1
-
-
- Cells(row_number, 1) = salutation
- Cells(row_number, 2) = TextBox_Last_Name.Value
- Cells(row_number, 3) = TextBox_First_Name.Value
- Cells(row_number, 4) = TextBox_Address.Value
- Cells(row_number, 5) = TextBox_Place.Value
- Cells(row_number, 6) = ComboBox_Country.Value
-
-
- OptionButton1.Value = True
- TextBox_Last_Name.Value = ""
- TextBox_First_Name.Value = ""
- TextBox_Address.Value = ""
- TextBox_Place.Value = ""
- ComboBox_Country.ListIndex = -1
Dim row_number As Integer, salutation As String
'अपील का चयन
For Each salutation_button In Frame_Salutation.Controls
If salutation_button.Value Then
salutation = salutation_button.Caption 'अपील चयनित
End If
Next
'row_number = कॉलम +1 में अंतिम गैर-रिक्त सेल की पंक्ति संख्या
row_number = Range("A65536").End(xlUp).Row + 1
'वर्कशीट में मान सम्मिलित करना
Cells(row_number, 1) = salutation
Cells(row_number, 2) = TextBox_Last_Name.Value
Cells(row_number, 3) = TextBox_First_Name.Value
Cells(row_number, 4) = TextBox_Address.Value
Cells(row_number, 5) = TextBox_Place.Value
Cells(row_number, 6) = ComboBox_Country.Value
'चिपकाने के बाद, मूल मान वापस आ जाते हैं
OptionButton1.Value = True
TextBox_Last_Name.Value = ""
TextBox_First_Name.Value = ""
TextBox_Address.Value = ""
TextBox_Place.Value = ""
ComboBox_Country.ListIndex = -1
सामान्य उपस्थिति
बस, यहां आपके पास अभ्यास के लिए पूरा कोड और डाउनलोड करने के लिए फ़ाइल है:
- Private Sub CommandButton_Close_Click()
- Unload Me
- End Sub
-
- Private Sub UserForm_Initialize()
- For i = 1 To 252
- ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)
- Next
- End Sub
-
- Private Sub CommandButton_Add_Click()
-
- Label_Last_Name.ForeColor = RGB(0, 0, 0)
- Label_First_Name.ForeColor = RGB(0, 0, 0)
- Label_Address.ForeColor = RGB(0, 0, 0)
- Label_Place.ForeColor = RGB(0, 0, 0)
- Label_Country.ForeColor = RGB(0, 0, 0)
-
-
- If TextBox_Last_Name.Value = "" Then
- Label_Last_Name.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_First_Name.Value = "" Then
- Label_First_Name.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_Address.Value = "" Then
- Label_Address.ForeColor = RGB(255, 0, 0)
- ElseIf TextBox_Place.Value = "" Then
- Label_Place.ForeColor = RGB(255, 0, 0)
- ElseIf ComboBox_Country.Value = "" Then
- Label_Country.ForeColor = RGB(255, 0, 0)
- Else
-
- Dim row_number As Integer, salutation As String
-
-
- For Each salutation_button In Frame_Salutation.Controls
- If salutation_button.Value Then
- salutation = salutation_button.Caption
- End If
- Next
-
-
- row_number = Range("A65536").End(xlUp).Row + 1
-
-
- Cells(row_number, 1) = salutation
- Cells(row_number, 2) = TextBox_Last_Name.Value
- Cells(row_number, 3) = TextBox_First_Name.Value
- Cells(row_number, 4) = TextBox_Address.Value
- Cells(row_number, 5) = TextBox_Place.Value
- Cells(row_number, 6) = ComboBox_Country.Value
-
-
- OptionButton1.Value = True
- TextBox_Last_Name.Value = ""
- TextBox_First_Name.Value = ""
- TextBox_Address.Value = ""
- TextBox_Place.Value = ""
- ComboBox_Country.ListIndex = -1
- End If
- End Sub
Private Sub CommandButton_Close_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize() '"देश" शीट पर 252 देशों की सूची
For i = 1 To 252
ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)
Next
End Sub
Private Sub CommandButton_Add_Click()
'नाम का रंग काला पर सेट करें
Label_Last_Name.ForeColor = RGB(0, 0, 0)
Label_First_Name.ForeColor = RGB(0, 0, 0)
Label_Address.ForeColor = RGB(0, 0, 0)
Label_Place.ForeColor = RGB(0, 0, 0)
Label_Country.ForeColor = RGB(0, 0, 0)
'सामग्री नियंत्रण
If TextBox_Last_Name.Value = "" Then 'यदि कुछ भी निर्दिष्ट नहीं है...
Label_Last_Name.ForeColor = RGB(255, 0, 0) 'शीर्षक का रंग लाल पर सेट करें
ElseIf TextBox_First_Name.Value = "" Then
Label_First_Name.ForeColor = RGB(255, 0, 0)
ElseIf TextBox_Address.Value = "" Then
Label_Address.ForeColor = RGB(255, 0, 0)
ElseIf TextBox_Place.Value = "" Then
Label_Place.ForeColor = RGB(255, 0, 0)
ElseIf ComboBox_Country.Value = "" Then
Label_Country.ForeColor = RGB(255, 0, 0)
Else
'यदि फॉर्म भरा हुआ है, तो मान वर्कशीट में चिपका दिए जाएंगे
Dim row_number As Integer, salutation As String
'अपील का चयन
For Each salutation_button In Frame_Salutation.Controls
If salutation_button.Value Then
salutation = salutation_button.Caption
End If
Next
'row_number = कॉलम +1 में अंतिम गैर-रिक्त सेल की पंक्ति संख्या
row_number = Range("A65536").End(xlUp).Row + 1
'वर्कशीट में मान सम्मिलित करना
Cells(row_number, 1) = salutation
Cells(row_number, 2) = TextBox_Last_Name.Value
Cells(row_number, 3) = TextBox_First_Name.Value
Cells(row_number, 4) = TextBox_Address.Value
Cells(row_number, 5) = TextBox_Place.Value
Cells(row_number, 6) = ComboBox_Country.Value
'डेटा डालने के बाद, हम प्रारंभिक मान लौटाते हैं
OptionButton1.Value = True
TextBox_Last_Name.Value = ""
TextBox_First_Name.Value = ""
TextBox_Address.Value = ""
TextBox_Place.Value = ""
ComboBox_Country.ListIndex = -1
End If
End Sub
यहां डाउनलोड के लिए Excel फ़ाइल है: controls_exercise2.xls