You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA:如何将表格可见行数据赋值到数组以加载ListBox?

仅加载Excel表格可见行B、C列数据到ListBox的实现

之前的代码直接读取单元格区域赋值给数组,会把隐藏行数据也加载到ListBox里,现在需要基于ListObject的行遍历逻辑,只提取可见行的B、C列数据,同时解决数组下标越界问题。

完整实现代码

Dim tbl As ListObject
Dim rngRow As Range
Dim myArray() As Variant
Dim rowCount As Integer
Dim colIndex As Integer

Set tbl = Workbook1.Sheets("Sheet1").ListObjects("Table1")
rowCount = 0

' 初始化ListBox
With Me.lbWaste
    .Clear
    .ColumnHeads = False
    .ColumnCount = 2 ' B、C列共2列
    .ColumnWidths = "100;50"
End With

' 遍历表格行,仅处理可见行
For Each rngRow In tbl.DataBodyRange.Rows
    If Not rngRow.EntireRow.Hidden Then
        rowCount = rowCount + 1
        ' 动态扩展数组,避免下标越界
        ReDim Preserve myArray(1 To rowCount, 1 To 2)
        ' 赋值B列(表格第2列)和C列(表格第3列)的值
        myArray(rowCount, 1) = rngRow.Cells(1, 2).Value
        myArray(rowCount, 2) = rngRow.Cells(1, 3).Value
    End If
Next rngRow

' 将数组加载到ListBox
If rowCount > 0 Then
    Me.lbWaste.List = myArray
End If
Me.lbWaste.TopIndex = 0

关键说明

  • 使用动态数组搭配ReDim Preserve动态扩展数组长度,彻底避免固定数组引发的下标越界错误
  • 通过Not rngRow.EntireRow.Hidden判断行可见性,仅将可见行数据存入数组
  • 直接引用ListObject的列索引(B对应表格第2列、C对应第3列),保证取值精准
  • 最后判断数组有数据时再赋值给ListBox,避免空数组导致的异常

内容的提问来源于stack exchange,提问作者Daniel Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:15:43