Excel 突出显示某些行

Excel 突出显示某些行,excel,vba,Excel,Vba,我试图选择透视表中的某些行,并使用vba突出显示它们。我一直在尝试一些事情,但我只能突出显示一个单元格。下面的代码不起作用,但可能对其进行一些调整即可修复。我需要在vba中执行此操作,而不是使用条件格式 编辑:使用下面答案的建议和自己的知识改进代码。但它仍然不能正常工作 Sub Highlight() Dim fnd As Variant fnds = Array("abc", "dfy", "zxc") For i = 0 To UBound(fnds) Cells.Find(Wh

我试图选择透视表中的某些行,并使用vba突出显示它们。我一直在尝试一些事情,但我只能突出显示一个单元格。下面的代码不起作用,但可能对其进行一些调整即可修复。我需要在vba中执行此操作,而不是使用条件格式

编辑:使用下面答案的建议和自己的知识改进代码。但它仍然不能正常工作

Sub Highlight()


Dim fnd As Variant

fnds = Array("abc", "dfy", "zxc")


For i = 0 To UBound(fnds)

Cells.Find(What:=(fnds), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
With Selection.EntireRow.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With
Next

End Sub

问题是您正在引用的
集合。相反,您可能需要所选范围的
EntireRow

With Selection.EntireRow.Interior
   .Pattern = xlSolid
   ...

通过使用.Find,您只找到数组fnds中每个元素的第一个实例,这是您想要的吗?我想你是在追踪每一个事件,在这种情况下,我们需要在那里建立一个循环

这里也是个人偏好,但我更喜欢创建对要操作的单元格/行/列的引用,然后只执行一次实际操作。当您仅在着色时,这并不是一个大问题,但在进行诸如删除和更新之类的更改时,它可以节省大量的处理时间

Sub Highlight()
Dim i As Long, DelRange As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If InStr(1, Cells(i, 1), "abc") <> 0 Or InStr(1, Cells(i, 1), "dfy") <> 0 Or InStr(1, Cells(i, 1), "zxc") <> 0 Then DelRange = DelRange & "," & i & ":" & i
Next i
With Range(Right(DelRange, Len(DelRange) - 1)).Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With
End Sub
子高亮显示()
我的尺寸和绳子一样长,长度和绳子一样长
对于i=1到单元格(Rows.Count,1).End(xlUp).Row
如果InStr(1,单元格(i,1),“abc”)0或InStr(1,单元格(i,1),“dfy”)0或InStr(1,单元格(i,1),“zxc”)0,则DelRange=DelRange&“,”&i&“:”&i
接下来我
带范围(右侧(DelRange,Len(DelRange)-1))。内饰
.Pattern=xlSolid
.PatternColorIndex=xlAutomatic
.Color=65535
.TintAndShade=0
.PatternTintAndShade=0
以
端接头

似乎更接近,但仍然没有达到预期的行为。它突出显示第一个查找周围的行并在那里停止。将
块与
块粘在
For
块内,以便它可以成为通过
DelRange
的迭代的一部分