我正在使用二维数组将数据加载到多列列表框中。
我想隐藏一个特定的列,但不知道如何。我不能只排除数据 - 因为我想稍后将其引用为隐藏列 - 但我不希望用户看到它。
这是我到目前为止所做的:
For x = 0 To UBound(ReturnArray, 2)
NISSLIST.ListBox1.Clear 'Make sure the Listbox is empty
NISSLIST.ListBox1.ColumnCount = UBound(ReturnArray, 1) 'Set the number of columns
'Fill the Listbox
NISSLIST.ListBox1.AddItem x 'Additem creates a new row
For y = 0 To UBound(ReturnArray, 1)
NISSLIST.ListBox1.LIST(x, y) = ReturnArray(y, x) 'List(x,y) X is the row number, Y the column number
If y = 3 Then 'Want to hide this column in listbox
NISSLIST.ListBox1.NOIDEA '<<< HELP HERE <<<, What do I put to hide this column of my multi-column listbox????
End If
Next y
Next x
答案 0 :(得分:1)
ColumnHidden属性仅适用于RowSource查询,并且不会在列表框值中包括该列。 如果您希望这些值仍然在列表框中并被隐藏,则在VBA中这样做的唯一方法是通过ColumnWidths属性。
要隐藏第4列(索引3),请输入以下代码:
NISSLIST.ListBox1.ColumnWidths = (";;;0cm")
或者,如果您希望像问题中的循环那样循环使用它:
Dim strWidths As String
For y = 0 To UBound(ReturnArray, 1)
If y = 3 Then
strWidths = strWidths + "0cm;"
Else
strWidths = strWidths + ";"
End If
Next y
NISSLIST.ListBox1.ColumnWidths = (strWidths)
尽管我不建议在嵌套循环中执行此操作,因为它只需要执行一次即可。
除非指定宽度,否则其他列的宽度将平均分配。
我知道这可能对原始海报不再有用,但可以帮助仍然遇到此问题的其他人(如我)。当您希望用户能够操纵列表框中的数据时,对于隐藏“键”列非常有用。
答案 1 :(得分:0)
通过MSDN
NISSLIST.ListBox1.Column(x,3).ColumnHidden=-1