TOP

VBA-पाठ 12.4. नियंत्रण तत्व (व्यायाम)

आइए अब नियंत्रण (Controls) का उपयोग करने का अभ्यास करने के लिए एक छोटा सा अभ्यास देखें।


तैयार प्रपत्र और नियंत्रण तत्वों वाली एक फ़ाइल है। हमें ऐसा कोड लिखने की ज़रूरत है जो सभी तत्वों को काम में लाए ताकि उपयोगकर्ता फ़ॉर्म के साथ इंटरेक्शन के माध्यम से हमारे तात्कालिक डेटाबेस को पॉप्युलेट कर सके।

यहां डाउनलोड करने के लिए Excel फ़ाइल है: controls_exercise.xls

अब यह स्पष्ट होना चाहिए कि यहां लक्ष्य फॉर्म का उपयोग करके तालिका को भरना है।

विचार करने योग्य कुछ बिंदु:

  • देशों की सूची दूसरी शीट की सूची पर आधारित है;
  • नया संपर्क जोड़ने से पहले नियंत्रण तत्वों के मूल्यों की जाँच करना;
  • मान दर्ज करने के बाद, प्रपत्र को बंद किए बिना नियंत्रण के प्रारंभिक मान लौटाना।
  • समस्या को हल करने के तरीकों में से एक

    सबसे पहले, हमें उपयोग को आसान बनाने के लिए अपने फॉर्म की Zoom प्रॉपर्टी को 120 तक बढ़ाना होगा:

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

    "श्रीमती" को डिफ़ॉल्ट रूप से चुना जाता है (संपत्ति Value: True), यानी, इसे चुनते समय हम पते की जांच नहीं करेंगे।

    बंद करें बटन

    1. Private Sub CommandButton_Close_Click()  
    2.      Unload Me  
    3. End Sub  

    ड्रॉप-डाउन सूची की सामग्री

    1. Private Sub UserForm_Initialize() 'फॉर्म खुला होने पर सूची लोड हो रही है  
    2.     For i = 1 To 252 'देश वर्कशीट से 252 देशों की सूची तैयार करना  
    3.        ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)  
    4.     Next  
    5. End Sub  

    नियंत्रण तत्वों की जाँच करना

    यदि कोई नियंत्रण खाली है तो एक सरल समाधान एक संवाद प्रदर्शित करना होगा।

    1. Private Sub CommandButton_Add_Click()  
    2.      If TextBox_Last_Name.Value = "" Or TextBox_First_Name.Value = "" Or TextBox_Address.Value = "" Or TextBox_Place.Value = "" Or ComboBox_Country.Value = "" Then  
    3.          MsgBox "Form incomplete"  
    4.      Else  
    5.          'यहां संपर्क दर्ज करने के निर्देश...  
    6.      End If  
    7. End Sub  

    लेकिन इसे थोड़ा और जटिल बनाने के लिए, प्रत्येक तत्व की अलग से जाँच की जानी चाहिए, और यदि उनमें से कोई भी खाली है, तो उसके नाम का रंग () बदलकर लाल कर देना चाहिए:

    1. Private Sub CommandButton_Add_Click()  
    2.      'नाम का रंग काला पर सेट करें  
    3.      Label_Last_Name.ForeColor  = RGB(0, 0, 0)  
    4.      Label_First_Name.ForeColor = RGB(0, 0, 0)  
    5.      Label_Address.ForeColor    = RGB(0, 0, 0)  
    6.      Label_Place.ForeColor      = RGB(0, 0, 0)  
    7.      Label_Country.ForeColor    = RGB(0, 0, 0)  
    8.   
    9.      'सामग्री नियंत्रण  
    10.      If TextBox_Last_Name.Value = "" Then 'यदि कुछ भी निर्दिष्ट नहीं है...  
    11.          Label_Last_Name.ForeColor = RGB(255, 0, 0) 'शीर्षक का रंग लाल पर सेट करें  
    12.      ElseIf TextBox_First_Name.Value = "" Then  
    13.          Label_First_Name.ForeColor = RGB(255, 0, 0)  
    14.      ElseIf TextBox_Address.Value = "" Then  
    15.          Label_Address.ForeColor = RGB(255, 0, 0)  
    16.      ElseIf TextBox_Place.Value = "" Then  
    17.          Label_Place.ForeColor = RGB(255, 0, 0)  
    18.      ElseIf ComboBox_Country.Value = "" Then  
    19.          Label_Country.ForeColor = RGB(255, 0, 0)  
    20.      Else  
    21.          'यहां संपर्क दर्ज करने के निर्देश...  
    22.      End If  
    23. End Sub  

    डेटा सम्मिलित करना

    उपरोक्त कोड में दर्शाए गए स्थान पर निम्नलिखित कोड डाला जाना चाहिए (टिप्पणियाँ देखें):

    1. Dim row_number As Integer, salutation As String  
    2.   
    3. 'अपील का चयन  
    4. For Each salutation_button In Frame_Salutation.Controls  
    5.     If salutation_button.Value Then  
    6.         salutation = salutation_button.Caption 'अपील चयनित  
    7.     End If  
    8. Next  
    9.   
    10. 'row_number = कॉलम +1 में अंतिम गैर-रिक्त सेल की पंक्ति संख्या  
    11. row_number = Range("A65536").End(xlUp).Row + 1  
    12.   
    13. 'वर्कशीट में मान सम्मिलित करना  
    14. Cells(row_number, 1) = salutation  
    15. Cells(row_number, 2) = TextBox_Last_Name.Value  
    16. Cells(row_number, 3) = TextBox_First_Name.Value  
    17. Cells(row_number, 4) = TextBox_Address.Value  
    18. Cells(row_number, 5) = TextBox_Place.Value  
    19. Cells(row_number, 6) = ComboBox_Country.Value  
    20.   
    21. 'चिपकाने के बाद, मूल मान वापस आ जाते हैं  
    22. OptionButton1.Value = True  
    23. TextBox_Last_Name.Value  = ""  
    24. TextBox_First_Name.Value = ""  
    25. TextBox_Address.Value    = ""  
    26. TextBox_Place.Value      = ""  
    27. ComboBox_Country.ListIndex = -1  

    सामान्य उपस्थिति

    बस, यहां आपके पास अभ्यास के लिए पूरा कोड और डाउनलोड करने के लिए फ़ाइल है:

    1. Private Sub CommandButton_Close_Click()  
    2.      Unload Me  
    3. End Sub  
    4.   
    5. Private Sub UserForm_Initialize() '"देश" शीट पर 252 देशों की सूची  
    6.     For i = 1 To 252  
    7.         ComboBox_Country.AddItem Sheets("Country").Cells(i, 1)  
    8.     Next  
    9. End Sub  
    10.   
    11. Private Sub CommandButton_Add_Click()  
    12.      'नाम का रंग काला पर सेट करें  
    13.      Label_Last_Name.ForeColor  = RGB(0, 0, 0)  
    14.      Label_First_Name.ForeColor = RGB(0, 0, 0)  
    15.      Label_Address.ForeColor    = RGB(0, 0, 0)  
    16.      Label_Place.ForeColor      = RGB(0, 0, 0)  
    17.      Label_Country.ForeColor    = RGB(0, 0, 0)  
    18.   
    19.      'सामग्री नियंत्रण  
    20.      If TextBox_Last_Name.Value = "" Then 'यदि कुछ भी निर्दिष्ट नहीं है...  
    21.          Label_Last_Name.ForeColor = RGB(255, 0, 0) 'शीर्षक का रंग लाल पर सेट करें  
    22.      ElseIf TextBox_First_Name.Value = "" Then  
    23.          Label_First_Name.ForeColor = RGB(255, 0, 0)  
    24.      ElseIf TextBox_Address.Value = "" Then  
    25.          Label_Address.ForeColor = RGB(255, 0, 0)  
    26.      ElseIf TextBox_Place.Value = "" Then  
    27.          Label_Place.ForeColor = RGB(255, 0, 0)  
    28.      ElseIf ComboBox_Country.Value = "" Then  
    29.          Label_Country.ForeColor = RGB(255, 0, 0)  
    30.      Else  
    31.          'यदि फॉर्म भरा हुआ है, तो मान वर्कशीट में चिपका दिए जाएंगे  
    32.          Dim row_number As Integer, salutation As String  
    33.            
    34.          'अपील का चयन  
    35.          For Each salutation_button In Frame_Salutation.Controls  
    36.              If salutation_button.Value Then  
    37.                  salutation = salutation_button.Caption  
    38.              End If  
    39.          Next  
    40.   
    41.          'row_number = कॉलम +1 में अंतिम गैर-रिक्त सेल की पंक्ति संख्या  
    42.          row_number = Range("A65536").End(xlUp).Row + 1  
    43.   
    44.          'वर्कशीट में मान सम्मिलित करना  
    45.          Cells(row_number, 1) = salutation  
    46.          Cells(row_number, 2) = TextBox_Last_Name.Value  
    47.          Cells(row_number, 3) = TextBox_First_Name.Value  
    48.          Cells(row_number, 4) = TextBox_Address.Value  
    49.          Cells(row_number, 5) = TextBox_Place.Value  
    50.          Cells(row_number, 6) = ComboBox_Country.Value  
    51.            
    52.          'डेटा डालने के बाद, हम प्रारंभिक मान लौटाते हैं  
    53.          OptionButton1.Value = True  
    54.          TextBox_Last_Name.Value  = ""  
    55.          TextBox_First_Name.Value = ""  
    56.          TextBox_Address.Value    = ""  
    57.          TextBox_Place.Value      = ""  
    58.          ComboBox_Country.ListIndex = -1  
    59.      End If  
    60. End Sub  

    यहां डाउनलोड के लिए Excel फ़ाइल है: controls_exercise2.xls