如何在Excel 2010中使用VBA查找连续的最后一个彩色&空单元格?
我是VBA的新手,正在编写一个macros来查找在特定行中填充特定颜色的最后一个空单元。 基于我迄今为止所阅读和尝试的内容:
- 当试图识别最后一个单元格/行/列时,最好从底部开始或从右侧开始。
- Find方法比使用循环更快。
- 关于(以及因此的用法)的问题重点关注用(有时没有)数据或最后使用的单元格(通常在一列中,并包含数据)来识别最后一行或一列。
- 在使用
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未设置
- 我如何确定代码是否正在识别正确的单元格? (我已经试过
MsgBox
并将find的单元格的内部颜色设置为不同的颜色,但也会出错。) - 代码中有错误,无法识别正确的单元格吗?
- 我是否应该使用Find方法以外的方法?
我期待着(也将非常感谢)任何“大师”们正在破解这个小小的坚果!
好的问,并提出了问题。
- testing你是否find了匹配
If Not rngFindColorCell Is Nothing
(请参见下面的最后一行) - 现在你的代码开始
XFB18
因为你已经使用了xlPrevious
,然后在XFA18
等(最终返回到XFD18
,最后是XFC18
- 您的
Select
线是不必要的。 - 最好使用
xlWhole
时,整个string而不是xlPart
(在这种情况下无关紧要) - 使用
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