1

我在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

但它给出了错误。

我该怎么办?

4

5 回答 5

5

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

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,因为它是最后选择的。

于 2013-05-09T05:05:16.500 回答
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 回答(谁是第一个)。

于 2013-05-09T05:17:42.097 回答
2

AFAIK,您可以按索引访问单元格。
尝试替换For Each loopfor 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
于 2013-05-09T04:23:40.973 回答
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
于 2013-05-09T04:43:27.930 回答
1

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

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
于 2013-09-13T09:15:21.463 回答