क्या कोई तरीका है जो मैं सूची बॉक्स या अन्य सुविधा को कोशिकाओं की श्रेणी द्वारा उपयोगकर्ता के रूप में पॉप्युलेट कर सकता हूं?
मैं अपने प्रत्येक चयनित कॉलम को 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
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
लिस्टबॉक्स के लिए परीक्षण नहीं किया गया है, लेकिन यहां बताया गया है कि कैसे मैं एक रिकॉर्डसेट के परिणाम के साथ एक कॉम्बोक्स भरता हूं
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 विधि को कॉल करें और फिर सूची तत्व तक पहुंचकर इसे भरें
यह मानकर कि मैं आपके प्रश्न को सही से पढ़ रहा हूं, इसमें एकल सूची बॉक्स में आपके द्वारा स्तंभों की संख्या के साथ एक पंक्ति जोड़नी चाहिए।
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 नियंत्रण के कॉलम गिनती गुणों को संपादित करने के लिए याद रखें :)
संबंधित सवाल
नए सवाल
vba
अनुप्रयोगों के लिए विजुअल बेसिक (VBA) मैक्रो लिखने के लिए एक इवेंट-संचालित, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है, जिसका उपयोग पूरे ऑफिस सूट के साथ-साथ अन्य अनुप्रयोगों के लिए भी किया जाता है। VBA VB.NET, या VBS के बराबर नहीं है; यदि आप Visual Studio उपयोग [vb.net] में काम कर रहे हैं। यदि आपका प्रश्न विशेष रूप से किसी एमएस ऑफिस एप्लिकेशन को प्रोग्रामिंग करने के बारे में है, तो उपयुक्त टैग का भी उपयोग करें: [एक्सेल], [एमएस-एक्सेस], [एमएस-वर्ड], [आउटलुक], या [एमएस-प्रोजेक्ट]।