假设我有以下示例表
我有一个for循环,遍历整个ListColumn(2)
(列C / 3),并根据谁拥有最多的苹果来对“用户”进行排名(例如,迈克尔将是1,罗伯特2,等等)。
但是,假设我只想引用表的特定范围
(例如,假设Range("C7:C9") <=> ListRows(3,4,5)
)
我怎样才能做到这一点?
我有以下代码:
Private Sub CommandButton1_Click()
Dim tbl As ListObject: Set tbl = Sheets("Sheet1").ListObjects("Table1")
Dim my_range As Range
For Each my_range In tbl.ListColumns(2).DataBodyRange
' ^ this runs through entire column instead of the specified range I want!
my_range.Offset(0, 1) = WorksheetFunction.Rank(my_range, tbl.ListColumns(2).DataBodyRange)
' ^ again, isntead of entire DataBodyRange we should be rather referencing the specific Range
Next my_range
End Sub
基本上,我需要以某种方式将
.DataBodyRange
本身限制在特定范围内,问题是,指定了.DataBodyRange
以将整个Column / Row或仅将整个ListObject中的1个单元格用作.DataBodyRange([row index], [column index])
。因此,在选择Robert,Michael,Laurel
ListRows(3, 4, 5)
的假定示例中,预期结果将是:有什么建议怎么做?
最佳答案
您可以使用以下方式引用列中的连续单元格:
With tbl.ListColumns(2).DataBodyRange
For Each my_range in Range(.Cells(3), .Cells(5))
' Code here.
Next my_range
End With
你是这个意思吗?