迭代列表对象的行,如何访问整行?
Iterating on a list object's rows, how can I access the entire row?
我来找你是因为 VBA 在线文献在处理表格和列表对象时没有显示很多结果。
使用以下代码,我将列表对象项添加到用户表单中的列表框中。我遍历列表对象的行。但我需要验证该行是否被隐藏,因为有时电子表格中的 table 上会有过滤器:
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
我来找你是因为 VBA 在线文献在处理表格和列表对象时没有显示很多结果。
使用以下代码,我将列表对象项添加到用户表单中的列表框中。我遍历列表对象的行。但我需要验证该行是否被隐藏,因为有时电子表格中的 table 上会有过滤器:
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