从for循环(Excel VBA)中访问范围的下一个项目

问题描述:

我有一个过滤的电子表格,它没有明显的模式。我需要检查是否有两个连续的单元格用灰色填充(RGB:191,191,191)。当我连续说,我的意思是在可见细胞之外,如此连续不一定意味着行号将是连续的。不过,我不确定如何从for循环中访问该范围的下一行。我复制并粘贴了脚本的简化版本以帮助解答。由于
从for循环(Excel VBA)中访问范围的下一个项目

Set Rng = Range("A2:A105").SpecialCells(xlCellTypeVisible) 
For Each rowcheck In Rng 
    If Cells(rowcheck.Row, "C").Interior.color = RGB(191, 191, 191) And _' 
    'The next visible cell also has an rgb value of 191 Then 
    blah blah 
    End If 
Next rowcheck 
+0

两件事情:1 。是否可以使用“C”在'Cells()'中? (从来没有见过)和2.在'和'后面的评论中,下一个可见单元格意味着什么? – 2014-09-25 13:14:00

+0

@Goosebumbs yes可以在'Cells()中使用列名称' – 2014-09-25 13:14:33

+1

我想使用另一个变量来存储* previous *单元格,并在每次迭代中检查它,而不是尝试检查下一个单元格。 – Rory 2014-09-25 13:19:30

就做两遍:

  1. 得到的信息
  2. 环比信息

例如:

Sub dural() 
    Dim boo() As Boolean, Rng As Range, i As Long, iMax As Long 
    Set Rng = Range("A2:A105").SpecialCells(xlCellTypeVisible) 
    ReDim boo(1 To Rng.Count) 

    i = 1 
    For Each rowcheck In Rng 
     If Cells(rowcheck.Row, "C").Interior.Color = RGB(191, 191, 191) Then 
      boo(i) = True 
     Else 
      boo(i) = False 
     End If 
     i = i + 1 
    Next rowcheck 
    iMax = i - 2 

    For i = 1 To iMax 
     If boo(i) And boo(i + 1) Then 
     'whatever 
     End If 
    Next i 

End Sub 
+0

谢谢你,不得不在第一个for循环中添加'rowNum(i)= rowCheck.Row',所以我有一个行号可以在“无论”阶段引用,我猜这是最简单的方法? 我真的会认为会有一种简单的方法可以说,范围的第四个元素。你可以用For Each循环遍历这些,所以它会让我困惑,为什么你不能明确地引用它们。 – quantum285 2014-09-25 14:39:56

+0

@ quantum285很难通过* index循环一个不相交的范围。*我通常需要**两个**通行证,尽管它对我来说很不愉快。 – 2014-09-25 14:48:16