迭代列表对象的行,如何访问整行?

问题描述

我来找你是因为在线 VBA 文献在处理表格和列表对象时没有显示很多结果。

使用以下代码,我将列表对象项添加用户表单中的列表框中。我遍历列表对象的行。但我需要验证该行是否隐藏,因为有时电子表格中的表格上会有过滤器:

With Main
    .Clear
    Dim i As Long
    For i = 1 To tblDataMaster.ListRows.Count
        If tblDataMaster.Row(i).Hidden = False Then
            .AddItem
            Dim j As Integer
            For j = 0 To 9
                .List(.ListCount - 1,j) = tblDataMaster.DataBodyRange(i,(j + 5))
            Next j
        End If
    Next i
    End With

当然,正如所写的那样,代码将不起作用,因为 .Row 不是列表对象的属性。但只是为了说明,If 语句需要验证该行是否隐藏。如果不是,那么它将用它填充列表框。

.DataBodyRange(i,1) 之类的东西也不起作用。

任何帮助,非常感谢。

解决方法

关键是使用ListRow.Range

Dim tblRow As ListRow
For Each tblRow In tblDataMaster.ListRows
    If Not tblRow.Range.EntireRow.Hidden Then
        ...
    End If
Next

或者如果按索引迭代:

For i = 1 To tblDataMaster.ListRows.Count
    If Not tblDataMaster.ListRows(i).Range.EntireRow.Hidden Then
        ...
    End If
Next

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...