我正在使用二维数组将数据加载到多列列表框中。
我想隐藏一个特定的列,但不知道如何。我不能只排除数据 - 因为我想稍后将其引用为隐藏列 - 但我不希望用户看到它。
这是我到目前为止:
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
通过MSDN NISSLIST.ListBox1.Column(x,3).ColumnHidden=-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)
虽然我不建议在嵌套循环中执行此操作,因为它只需要执行一次。
除非指定宽度,否则其他列的宽度将相等。
我知道这可能对原始海报不再有用,但它可能会帮助其他人(比如我)仍然遇到这个问题。当您希望用户能够操作列表框中的数据时,隐藏Key列非常有用。