Excel 突出显示某些行
我试图选择透视表中的某些行,并使用vba突出显示它们。我一直在尝试一些事情,但我只能突出显示一个单元格。下面的代码不起作用,但可能对其进行一些调整即可修复。我需要在vba中执行此操作,而不是使用条件格式 编辑:使用下面答案的建议和自己的知识改进代码。但它仍然不能正常工作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
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
的迭代的一部分