क्या कोई तरीका है जो मैं सूची बॉक्स या अन्य सुविधा को कोशिकाओं की श्रेणी द्वारा उपयोगकर्ता के रूप में पॉप्युलेट कर सकता हूं?

मैं अपने प्रत्येक चयनित कॉलम को 1 सूची बॉक्स में रखना चाहूंगा जैसे:

यहां

उदाहरण के लिए A2: हर कॉलम के लिए नई सूची बॉक्स बनाए बिना U100?

अभी मैं इसे पसंद करता हूं:

ListBox1.List = Application.Worksheets("Můj_Ranking").Range("B2:B" & lastRw).Value
ListBox2.List = Application.Worksheets("Můj_Ranking").Range("C2:C" & lastRw).Value
ListBox3.List = Application.Worksheets("Můj_Ranking").Range("D2:D" & lastRw).Value
ListBox4.List = Application.Worksheets("Můj_Ranking").Range("E2:E" & lastRw).Value
ListBox5.List = Application.Worksheets("Můj_Ranking").Range("F2:F" & lastRw).Value
ListBox6.List = Application.Worksheets("Můj_Ranking").Range("G2:G" & lastRw).Value
ListBox7.List = Application.Worksheets("Můj_Ranking").Range("H2:H" & lastRw).Value
ListBox8.List = Application.Worksheets("Můj_Ranking").Range("I2:I" & lastRw).Value
ListBox9.List = Application.Worksheets("Můj_Ranking").Range("J2:J" & lastRw).Value
ListBox10.List = Application.Worksheets("Můj_Ranking").Range("K2:K" & lastRw).Value
ListBox11.List = Application.Worksheets("Můj_Ranking").Range("L2:L" & lastRw).Value
1
HeadOverFeet 26 नवम्बर 2015, 16:57

3 जवाब

सबसे बढ़िया उत्तर

तो आप वास्तव में कई कॉलम के साथ एक सूची बॉक्स चाहते हैं, कुछ इस तरह से मदद करनी चाहिए:

With ListBox1
    .ColumnCount = 11
    .ColumnWidths = "50;50;50;50;50;50;50;50;50;50;50"
    .ColumnHeads = False
    .RowSource = "=Můj_Ranking!B2:L" & LastRw
    .MultiSelect = fmMultiSelectMulti
End With

या नियंत्रण के माध्यम से कैसे करें:

For i = 1 To 11
    With Application.Worksheets("Můj_Ranking")
         Controls("ListBox" & i).List = .Range(ColLet(i) & "2:" & ColLet(i) & lastRw).Value
    End With
Next i

और आपके पास अधिकांश नियंत्रणों के लिए .RowSource संपत्ति भी है! ;)

और स्तंभों के लिए पत्र प्राप्त करने का कार्य:

Public Function ColLet(x As Integer) As String
With ActiveSheet.Columns(x)
    ColLet = Left(.Address(False, False), InStr(.Address(False, False), ":") - 1)
End With
End Function
1
R3uK 26 नवम्बर 2015, 15:34

लिस्टबॉक्स के लिए परीक्षण नहीं किया गया है, लेकिन यहां बताया गया है कि कैसे मैं एक रिकॉर्डसेट के परिणाम के साथ एक कॉम्बोक्स भरता हूं

 Function Fill_Combobox(ByRef cbo As ComboBox, ByVal rs As ADODB.Recordset, ByVal colWidth As String)
    Dim aryColumnWidth() As String
    Dim i As Integer

    aryColumnWidth = Split(colWidth, ";")
    cbo.Clear
    cbo.ColumnCount = UBound(aryColumnWidth) + 1
    cbo.ColumnHeads = False
    cbo.ColumnWidths = colWidth

    Do Until rs.EOF
        With cbo
            .AddItem
            For i = 0 To UBound(aryColumnWidth)
                .List(.ListCount - 1, i) = rs.Fields(i)
            Next
        End With
        rs.MoveNext
    Loop
End Function 

यह एक सूची बॉक्स के लिए समान काम करना चाहिए। सूची बॉक्स में एक नई प्रविष्टि जोड़ने के लिए AddItem विधि को कॉल करें और फिर सूची तत्व तक पहुंचकर इसे भरें

0
cboden 26 नवम्बर 2015, 14:00

यह मानकर कि मैं आपके प्रश्न को सही से पढ़ रहा हूं, इसमें एकल सूची बॉक्स में आपके द्वारा स्तंभों की संख्या के साथ एक पंक्ति जोड़नी चाहिए।

for i = 2 to lstRw
    With ListBox1
        .AddItem Application.Worksheets("Můj_Ranking").Range("B" & i).value
        .List(.ListCount - 1 ,1) = Application.Worksheets("Můj_Ranking").Range("C" & i).Value
        .List(.ListCount - 1 ,2) = Application.Worksheets("Můj_Ranking").Range("D" & i).Value

        'And so on for each column
        .List(.ListCount - 1 ,10) = Application.Worksheets("Můj_Ranking").Range("L" & i).Value
    End With
next i

यह काम नहीं करेगा के अपने userform पर ListBox नियंत्रण के कॉलम गिनती गुणों को संपादित करने के लिए याद रखें :)

0
Vulthil 26 नवम्बर 2015, 14:32