TOP

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

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


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

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

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

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

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

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

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

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

    बंद करें बटन

    Private Sub CommandButton_Close_Click()
         Unload Me
    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()
         'नाम का रंग काला पर सेट करें
         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 = कॉलम +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() '"देश" शीट पर 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