如何使用VBA隐藏多列列表框中的列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用VBA隐藏多列列表框中的列相关的知识,希望对你有一定的参考价值。

我正在使用二维数组将数据加载到多列列表框中。

我想隐藏一个特定的列,但不知道如何。我不能只排除数据 - 因为我想稍后将其引用为隐藏列 - 但我不希望用户看到它。

这是我到目前为止:

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列非常有用。

以上是关于如何使用VBA隐藏多列列表框中的列的主要内容,如果未能解决你的问题,请参考以下文章

将列表的列拆分为同一 PySpark 数据框中的多列

listbox的值怎么获取vba

Excel vba列表框多列多行从14个文本框

基于具有列表值的多列删除数据框中的重复行[重复]

使用多值控制源隐藏组合框中的值

如何把查询结果显示在控件列表框中?我现在是显示在表单中。