如何在Excel 2010中使用VBA查找连续的最后一个彩色&空单元格?

我是VBA的新手,正在编写一个macros来查找在特定行中填充特定颜色的最后一个空单元。 基于我迄今为止所阅读和尝试的内容:

  1. 当试图识别最后一个单元格/行/列时,最好从底部开始或从右侧开始。
  2. Find方法比使用循环更快。
  3. 关于(以及因此的用法)的问题重点关注用(有时没有)数据或最后使用的单元格(通常在一列中,并包含数据)来识别最后一行或一列。
  4. 在使用Find方法之前,最好指定内部颜色,因为它可能具有其他内部颜色的值,这些内部颜色可能与之前使用的颜色(通过代码或用户)有所不同。

这是我到目前为止的代码:

 Sub FindLastEmptyTurquoiseCellOnRow18() Dim rngFindColorCell As Range Range("XFD18").Select With Application.FindFormat.Interior .Color = 16763955 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Set rngFindColorCell = Range("A18:XFD18").Find(What:="", After:=Range("XFC18"), _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _ MatchCase:=False, SearchFormat:=True) rngFindColorCell.Select End Sub 

After参数似乎与我想要的search方向明显冲突的新手眼睛(之后指示向右(?), xlPrevious说到左边)。 如果search必须在进行到左边之前确实开始1个单元格,我指定了该行中的倒数第二个单元格。

这也可能是我可以限制行的search到第8785列。

我试图在最后(这一次使用Select )来确定代码是否正在识别正确的单元格。 正是在这个时候,通过代码,我得到的错误:

运行时错误“91”:对象variables或块variables未设置

  1. 我如何确定代码是否正在识别正确的单元格? (我已经试过MsgBox并将find的单元格的内部颜色设置为不同的颜色,但也会出错。)
  2. 代码中有错误,无法识别正确的单元格吗?
  3. 我是否应该使用Find方法以外的方法?

我期待着(也将非常感谢)任何“大师”们正在破解这个小小的坚果!

好的问,并提出了问题。

  1. testing你是否find了匹配If Not rngFindColorCell Is Nothing (请参见下面的最后一行)
  2. 现在你的代码开始XFB18因为你已经使用了xlPrevious ,然后在XFA18等(最终返回到XFD18 ,最后是XFC18
  3. 您的Select线是不必要的。
  4. 最好使用xlWhole时,整个string而不是xlPart (在这种情况下无关紧要)
  5. 使用xlFormulas而不是xlValues也会匹配隐藏的列( xlValues跳过它们)

 Sub FindLastEmptyTurquoiseCellOnRow18() Dim rngFindColorCell As Range With Application.FindFormat.Interior .Color = 16763955 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Set rngFindColorCell = Range("A18:XFD18").Find(vbNullString, Range("XFC18"), xlFormulas, xlWhole, xlByRows, xlPrevious, , True) If Not rngFindColorCell Is Nothing Then MsgBox "found in " & rngFindColorCell.Address(0, 0) Else MsgBox "No matching cells found" End If End Sub