突出显示某些行

时间:2015-07-14 19:46:03

标签: excel-vba vba excel

我正在尝试选择数据透视表中的某些行并使用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

2 个答案:

答案 0 :(得分:1)

问题在于您引用的glGetString(GL_VERSION)集合。相反,您可能需要Rows所选范围。

EntireRow

答案 1 :(得分:1)

通过使用.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