假设我有以下示例表

vba - 引用表的.DataBodyRange的特定范围-LMLPHP

我有一个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)的假定示例中,预期结果将是:

vba - 引用表的.DataBodyRange的特定范围-LMLPHP

有什么建议怎么做?

最佳答案

您可以使用以下方式引用列中的连续单元格:

With tbl.ListColumns(2).DataBodyRange
    For Each my_range in Range(.Cells(3), .Cells(5))
      ' Code here.
    Next my_range
End With


你是这个意思吗?

08-26 17:18