खोज…


परिचय

यह एक सरल उदाहरण है कि शीट में कॉम्बो बॉक्स एक्टिवएक्स ऑब्जेक्ट को सम्मिलित करके अपनी कार्यपुस्तिका की सक्रिय शीट में एक ड्रॉप डाउन मेनू कैसे बनाया जाए। आप शीट के किसी भी सक्रिय सेल में पाँच जिमी हेंड्रिक्स गाने सम्मिलित करने में सक्षम होंगे और तदनुसार इसे साफ़ करने में सक्षम होंगे।

जिमी हेंड्रिक्स मेनू

सामान्य तौर पर, कोड को शीट के मॉड्यूल में रखा जाता है।

यह Worksheet_SelectionChange घटना है, जो हर बार सक्रिय शीट में एक अलग सेल चुने जाने पर आग लगाती है। आप कोड विंडो के ऊपर पहले ड्रॉप-डाउन मेनू से "वर्कशीट" और उसके बाद ड्रॉप डाउन मेनू से "Selection_Change" का चयन कर सकते हैं। इस स्थिति में, हर बार जब आप किसी सेल को सक्रिय करते हैं, तो कोड को कॉम्बो बॉक्स के कोड पर पुनर्निर्देशित किया जाता है।

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   ComboBox1_Change
   
End Sub

यहां, कॉम्बोबॉक्स को समर्पित दिनचर्या को डिफ़ॉल्ट रूप से चेंज इवेंट में कोडित किया गया है। इसमें, एक निश्चित सरणी है, जो सभी विकल्पों के साथ आबादी है। अंतिम स्थिति में CLEAR विकल्प नहीं, जिसका उपयोग किसी कक्ष की सामग्री को साफ़ करने के लिए किया जाएगा। फिर सरणी को कॉम्बो बॉक्स को सौंप दिया जाता है और इस रूटीन को पास कर दिया जाता है जो काम करता है।

Private Sub ComboBox1_Change()

Dim myarray(0 To 5)
    myarray(0) = "Hey Joe"
    myarray(1) = "Little Wing"
    myarray(2) = "Voodoo Child"
    myarray(3) = "Purple Haze"
    myarray(4) = "The Wind Cries Mary"
    myarray(5) = "CLEAR"
    
    With ComboBox1
        .List = myarray()
    End With

    FillACell myarray()

End Sub

सरणी को दिनचर्या में पारित किया जाता है जो कोशिकाओं को गीत के नाम से भरता है या उन्हें खाली करने के लिए शून्य मान देता है। सबसे पहले, एक पूर्णांक चर को उस पसंद की स्थिति का मूल्य दिया जाता है जिसे उपयोगकर्ता बनाता है। फिर, कॉम्बो बॉक्स को उपयोगकर्ता के सक्रिय होने वाले सेल के टॉप लेफ्ट कॉर्नर में ले जाया जाता है और अनुभव को अधिक तरल बनाने के लिए उसके आयामों को समायोजित किया जाता है। तब सक्रिय सेल को पूर्णांक चर में स्थिति में मान असाइन किया जाता है, जो उपयोगकर्ता की पसंद को ट्रैक करता है। यदि उपयोगकर्ता विकल्प से CLEAR का चयन करता है, तो सेल खाली कर दी जाती है।

प्रत्येक चयनित सेल के लिए संपूर्ण दिनचर्या दोहराती है।

Sub FillACell(MyArray As Variant)

Dim n As Integer

n = ComboBox1.ListIndex

ComboBox1.Left = ActiveCell.Left
ComboBox1.Top = ActiveCell.Top
Columns(ActiveCell.Column).ColumnWidth = ComboBox1.Width * 0.18

ActiveCell = MyArray(n)

If ComboBox1 = "CLEAR" Then
    Range(ActiveCell.Address) = ""
End If

End Sub

उदाहरण 2: विकल्प शामिल नहीं हैं

यह उदाहरण उन विकल्पों को निर्दिष्ट करने में उपयोग किया जाता है जो उपलब्ध आवास और इसके परिचर सुविधाओं के डेटाबेस में शामिल नहीं हो सकते हैं।

यह पिछले उदाहरण पर बनाता है, कुछ अंतरों के साथ:

  1. एक एकल कॉम्बो बॉक्स के लिए दो प्रक्रियाएं आवश्यक नहीं हैं, कोड को एक प्रक्रिया में जोड़कर किया जाता है।
  2. हर बार उपयोगकर्ता चयन के सही इनपुट के लिए अनुमति देने के लिए लिंक्डसेल प्रॉपर्टी का उपयोग
  3. सक्रिय सेल सुनिश्चित करने के लिए एक बैकअप सुविधा का समावेश सही कॉलम और एक त्रुटि निवारण कोड में है, जो पिछले अनुभव पर आधारित है, जहां सक्रिय सेल में पॉप्युलेट होने पर संख्यात्मक मान स्ट्रिंग्स के रूप में स्वरूपित होंगे।
Private Sub cboNotIncl_Change()

Dim n As Long
Dim notincl_array(1 To 9) As String

n = myTarget.Row
            
    If n >= 3 And n < 10000 Then
             
        If myTarget.Address = "$G$" & n Then
                
            'set up the array elements for the not included services
            notincl_array(1) = "Central Air"
            notincl_array(2) = "Hot Water"
            notincl_array(3) = "Heater Rental"
            notincl_array(4) = "Utilities"
            notincl_array(5) = "Parking"
            notincl_array(6) = "Internet"
            notincl_array(7) = "Hydro"
            notincl_array(8) = "Hydro/Hot Water/Heater Rental"
            notincl_array(9) = "Hydro and Utilities"
            
            cboNotIncl.List = notincl_array()
                    
        Else
                
            Exit Sub
                
        End If

        With cboNotIncl
                    
            'make sure the combo box moves to the target cell
            .Left = myTarget.Left
            .Top = myTarget.Top
                    
            'adjust the size of the cell to fit the combo box
            myTarget.ColumnWidth = .Width * 0.18
                    
            'make it look nice by editing some of the font attributes
            .Font.Size = 11
            .Font.Bold = False
                        
            'populate the cell with the user choice, with a backup guarantee that it's in column G
                
            If myTarget.Address = "$G$" & n Then
                    
                    .LinkedCell = myTarget.Address
                    
                    'prevent an error where a numerical value is formatted as text
                    myTarget.EntireColumn.TextToColumns
                    
            End If
                
        End With
                
    End If 'ensure that the active cell is only between rows 3 and 1000
            
End Sub

उपरोक्त मैक्रो हर बार तब शुरू किया जाता है जब सेल को वर्कशीट मॉड्यूल में SelectionChange घटना के साथ सक्रिय किया जाता है:

Public myTarget As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Set myTarget = Target

    'switch for Not Included
    If Target.Column = 7 And Target.Cells.Count = 1 Then

        Application.Run "Module1.cboNotIncl_Change"

    End If

End Sub


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow