VBA-如果自动筛选未返回要移动到下一个的结果

VBA-如果自动筛选未返回要移动到下一个的结果,vba,excel,Vba,Excel,很抱歉,这是一个完全的noob帖子(还有更多)。两周前,我决定在我的工作中承担一些简单的VBA项目,而之前我对VBA一无所知,这个网站拥有丰富的知识。我已经构建了一个成功的宏或2,但现在我只是在微调它 我想做的是: 我有一份工作表,每次收到它时,它的行数都会有所不同。我想为包含某个单词的任何单元格查找(或可能自动筛选)列。如果该单词存在,请突出显示该单元格的背景色 我当前代码遇到的问题是,虽然它只过滤最后一行可见单元格,但如果没有结果,它会选择并填充最后一个可见单元格之后的单元格,直到工作表底部

很抱歉,这是一个完全的noob帖子(还有更多)。两周前,我决定在我的工作中承担一些简单的VBA项目,而之前我对VBA一无所知,这个网站拥有丰富的知识。我已经构建了一个成功的宏或2,但现在我只是在微调它

我想做的是: 我有一份工作表,每次收到它时,它的行数都会有所不同。我想为包含某个单词的任何单元格查找(或可能自动筛选)列。如果该单词存在,请突出显示该单元格的背景色

我当前代码遇到的问题是,虽然它只过滤最后一行可见单元格,但如果没有结果,它会选择并填充最后一个可见单元格之后的单元格,直到工作表底部。所以我得到了一个巨大的颜色柱

在过去的一天里我一直在绞尽脑汁

ActiveSheet.Range("$A$1:$AO$" & lastRow).AutoFilter Field:=15, Operator:= _
    xlFilterValues, Criteria1:=("=*Repromotion*")
    lastRow = Range("O2").End(xlDown).Row
    Range(Range("O2"), Range("O" & lastRow)).Select

With Selection.Interior
    .Pattern = xlSolid
    .PatternColor = 16777215
    .Color = 16776960
    .PatternTintAndShade = 0
End With

任何帮助都将不胜感激。

您可以更改查找最后一行的方式……从底部开始向上搜索,而不是向下搜索

lastRow = Cells(Rows.Count, "O").End(xlUp).Row

如果需要,您可以添加一个复选框,以确保它不是标题行。

因此,我在使用当前代码时遇到的问题是,使用xlUp切换xlDown,以及尝试您建议的方法(感谢您的快速响应),它仍然突出显示单元格“O2”中的颜色直到标题,无论是否找到符合筛选条件的记录。因此,我似乎无法阻止标题。您不能使用当前代码,而是将xlDown切换到xlUp,这将始终只能为您提供O1:O2。这就是我建议检查LastRow是否返回头的原因。欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果你以后还有问题,请随时回来提供更多细节。我不想成为那种不读书、不招摇的新人。我已经阅读了调试技术的文章,内容非常丰富。我的代码在任何时候都不会出错,我想,它的性能和预期的一样。然而,这并不是在做我想做的事。我不知道是不是我太笨了,但怎么可能既“按预期执行”又“不做我想做的事”?不,你根本不是。我可能用错了术语。在这个编程的世界里,我当然没有自我意识。我的意思是,代码完全按照它说的去做。我理解它使用的逻辑。所以很明显,我在开始做我想做的事情时使用了错误的代码。希望这有意义?请不要恨我。到目前为止,我一直在犹豫是否加入董事会,因为我一直在努力自己寻找所有问题的答案。