繁体   English   中英

VBA:特定值中的颜色单元格,具体取决于值

[英]VBA: Color cells in a certain column, depending on value

今天,我不得不第一次与VBA打交道。 经过大约2个小时的研究,我放弃了并最终提出了这个问题,这很容易理解:

在我的excel Pivot上,我搜索具有特定标题“ Percentage”的列。 找到此列后,我要根据单元格的颜色为其着色。 (> 1绿色,<0.9红色,<1 und> = 0.9黄色)

到目前为止,我找到了该列(因为它并不总是同一列,所以我必须搜索它)。 但是,当我想访问单元格的值后,我收到类型不匹配错误(13)

Sub test()
Dim x As Range
    Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate

    For Each x In ActiveCell.EntireColumn
        If x.Value > 1 Then
            x.Interior.ColorIndex = 10
        End If
    Next x
End Sub

如您所见,我遍历该列。 这已经错了吗?

希望我能正确解释我的问题,并期待有所帮助

不幸的是,遍历ActiveCell.EntireColumn不会返回每个单元格,它只会返回一个Range ,即整个列。 尝试按索引循环:

Sub test()
    Dim columnNumber As Long
    columnNumber = Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Column
    Dim i As Long
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        If Cells(i, columnNumber).Value > 1 Then
            Cells(i, columnNumber).Interior.ColorIndex = 10
        End If
    Next i
End Sub

您应该遍历:
ActiveCell.EntireColumn.Cells
另一方面,遍历整个列似乎不是一个好主意,您应该尝试使用Jordan提到的条件格式,或者尝试检索表所使用的范围。

多谢您的回覆。 我尝试使用条件formattig来执行此操作,但是由于我的列位置每月更改一次,是否有可能?

@bobajob我尝试运行您的代码,但是在这里遇到typemissmatch(13)错误:

 If Cells(i, columnNumber).Value > 1 Then 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM