Populating 2nd+ column of listbox on Excel worksheet

拈花ヽ惹草 提交于 2019-12-25 04:47:18

问题


I have an ActiveX listbox on an Excel 2007 worksheet. I want to populate it directly, not by pointing its RowSource property to a range, because there is no range that has the desired values.

The listbox's ColumnCount is set to 2. I set ColumnWidths to "20;20", and now it returns: 20 pt;20 pt

So as far as I understand, two columns in the listbox should be available for writing, right?

Populating the first column is no problem:

activesheet.lstApplyCurves.List = array("Select All","Deselect All","aaa","bbb","ccc")

(or)

activesheet.lstApplyCurves.additem
activesheet.lstApplyCurves.List(0,0) = "Col1, Row1"

But how do I populate column 2? I get an error 380 ("Could not set the list property. Invalid property value.") on this:

activesheet.lstApplyCurves.List(0,1) = "Col2, Row1"

FWIW I've also tried this, but get the same error:

activesheet.lstApplyCurves.List(1,1) = "Col2, Row2"

So...how do I set values in the 2nd column?

UPDATE:

In addition to the answer below, FWIW I also found it's possible to assign a mulit-dimensional array to the List property, which is faster:

Dim ArrayToListbox() As Variant
ReDim ArrayToListbox(0 To 4, 0 To 2)
ArrayToListbox(0, 0) = "Select All"
ArrayToListbox(1, 0) = "Deselect All"
ArrayToListbox(2, 0) = "Row1-Col1"
ArrayToListbox(2, 1) = "Row1-Col2"
ArrayToListbox(2, 2) = "Row1-Col3"
ArrayToListbox(3, 0) = "Row2-Col1"
ArrayToListbox(3, 1) = "Row2-Col2"
ArrayToListbox(3, 2) = "Row2-Col3"
ArrayToListbox(4, 0) = "Row3-Col1"
ArrayToListbox(4, 1) = "Row3-Col2"
ArrayToListbox(4, 2) = "Row3-Col3" '"(" & Join(Array("a", "b", "c"), "|") & ")"
ActiveSheet.lstApplyCurves.Clear
ActiveSheet.lstApplyCurves.ColumnCount = 3
ActiveSheet.lstApplyCurves.List = ArrayToListbox

回答1:


This works for me. If the below doesn't work on your system then delete the listbox and re-create it and then try this code again.

Private Sub CommandButton1_Click()
    With ListBox1
        .Clear
        .ColumnCount = 2

        For i = 1 To 2
            .AddItem
            .List(i - 1, 0) = "Col1, Row" & i
            .List(i - 1, 1) = "Col2, Row" & i
        Next i

    End With
End Sub



来源:https://stackoverflow.com/questions/26679082/populating-2nd-column-of-listbox-on-excel-worksheet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!