检查单元格是Excel范围的最后一个单元格

时间:2013-05-09 03:58:52

标签: excel vba excel-vba

我正在循环MyRange范围。我需要找出CellMyRange的最后一个单元格。

For Each Cell In MyRange.Cells        
    If Cell = ' What should I write here?
        'Do some stuff
    End If
Next Cell

我试过这个:

If Cell = MyRange.Cells(0, MyRange.Count) Then

但它给出了错误。

我怎么回事呢?

5 个答案:

答案 0 :(得分:4)

你的答案很好,但这是一个有趣的问题。这是预先弄清楚的方法:

Sub test()
Dim MyRange As Excel.Range
Dim cell As Excel.Range
Dim LastCell As Excel.Range

Set MyRange = Selection
Set LastCell = MyRange.Areas(MyRange.Areas.Count).Cells(MyRange.Areas(MyRange.Areas.Count).Cells.Count)
For Each cell In MyRange
If cell.Address = LastCell.Address Then
    MsgBox cell.Address
    Exit For
End If
Next cell
End Sub

请注意,在我们的两种方法中,如果有多个区域,“最后一个单元格”可能不是最底部或最右边的单元格。例如,选择单元格J10:J20,然后选择E5:E10并运行以上操作。结果将是E10,因为它是最后选择的。

答案 1 :(得分:3)

我喜欢其他一些答案,但最简单的方法可能如下:

If Cell.Address = myRange.Cells(myRange.Cells.Count).Address Then

重要说明如果myRange是连续的单元格范围,则上述解决方案将有效。

如果您所在地区不连续,请使用@Doug Glancy的逻辑,该逻辑可以表示如下:

If Cell.Address = myRange.Areas(myRange.Areas.Count).Cells(myRange.Areas(myRange.Areas.Count).Cells.Count).Address Then

请!如果有人想要奖励这个答案,请自动使用@Doug Glancy答案(谁是第一个)。

答案 2 :(得分:2)

AFAIK,您可以按索引访问Cell 尝试将For Each loop替换为for loop

我认为这样的事情应该有效(未经测试):

Dim rng As Integer = myrange.Cells.Count
For i As Integer = 0 To rng - 1
            '...do something
    If i = rng Then
    End If
Next

答案 3 :(得分:2)

我这样做是为了得出结论

Dim i As Integer: i = 1

For Each Cell In MyRange.Cells            

    If i = MyRange.Cells.Count Then
        'Do if stuff using Cell
    Else
        'Do else stuff using Cell
    End If       

    i = i + 1

Next Cell

答案 4 :(得分:1)

要检查2个范围是否相同,您可以使用交叉方法(如果它们不相交,则它们不相同)。

Sub lastCellInForEach()
    Dim cell As Range, myrange As Range

    Set myrange = ActiveSheet.Range("A1:C1000")

    For Each cell In myrange.Cells
        'using Intersect to check if cell is the last cell in the range
        If Not Intersect(cell, myrange(myrange.cells.count)) Is Nothing Then
            debug.print cell.address
        End If
    Next cell

End Sub