我是VBA的新手,正在编写一个宏来查找特定行中填充了特定颜色的最后一个空单元格。基于我迄今为止所阅读和尝试过的内容:
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参数对我的新手来说似乎与我想要的搜索方向明显冲突(After表示向右(?),xlPrevious
表示向左移动)。如果搜索确实必须在向左前进1个单元格之前,我指定了行中倒数第二个单元格。
我也可以将行的搜索限制在前8785列。
我最后尝试(这次使用Select
)来确定代码是否正在识别正确的单元格。正是在这一点上,当我逐步执行代码时,我得到了错误:
运行时错误' 91':对象变量或未设置块变量
MsgBox
并将找到的单元格的内部颜色设置为不同的颜色,但也会出错。)我期待(并且非常感谢)任何一位大师'破解这个小坚果!
答案 0 :(得分:2)
好问并提出问题。
If Not rngFindColorCell Is Nothing
匹配的内容(请参阅下面的新最后一行)XFB18
,因为您已使用xlPrevious
,然后是XFA18
等(最终返回XFD18
,最后{{1 }} XFC18
行是不必要的。Select
(在这种情况下赢得不重要)时最好使用xlWhole
xlPart
而不是xlFormulas
也会匹配隐藏的列(xlValues
跳过它们)码
xlValues