通过宏在整张纸上进行条件格式化

时间:2013-05-09 22:23:54

标签: vba excel-vba excel

需要你的帮助。在我的电子表格中有一个宏,当激活测试时,查看整个数据集中的单元格颜色是否为粉红色。如果找到一个,那么第一个细胞被标记为粉红色,警告我,在那个特定的行上某处有一个粉红色的细胞。

一旦我注意到粉红色的细胞,我再次将其标记为透明,然后转到下一个细胞。

我需要在下面的工作代码中添加一个测试,看看是否没有粉红色..即..

如果单元格A9是粉红色,则表示第9行的某处有粉红色。我需要检查它是否仍在那里,如果没有让A9透明。

下面的代码是标记A9粉红色的代码(根据上面的示例。

代码:

Sub pink()
Dim rcell As Range
For Each rcell In Range(Cells(1, 1), Cells(1, ActiveSheet.UsedRange.Columns.Count))
    If rcell.Interior.ColorIndex = 38 Then
        Cells(ActiveSheet.UsedRange.Rows.Count, rcell.Column).Select
            Do Until ActiveCell.Interior.ColorIndex = rcell.Interior.ColorIndex
                ActiveCell.Offset(-1).Select
            Loop
            If ActiveCell.Row = rcell.Row Then rcell.Interior.ColorIndex = xlNone
    End If
Next rcell
For Each rcell In ActiveSheet.UsedRange
    If rcell.Interior.ColorIndex = 38 Then
        Cells(rcell.Row, 1).Interior.ColorIndex = 38
    End If
Next rcell
End Sub

贯穿一个场景:

第1行是标题并被排除在外,A列是事物被标记为粉红色的列。

B8是粉红色,因此当宏运行时,A8变为粉红色,D14变为粉红色,因此A14变为粉红色,A18变为粉红色,但第18行中没有粉红色,因此A18变为透明等等。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以运行以下透明程序。如果该行中没有粉红色单元格,它将使column A中的单元格透明。

Sub transparent()

    Dim lastRow As Long, rcell As Range, blnRed As Boolean
    lastRow = ActiveSheet.UsedRange.Rows.Count

    For i = 1 To lastRow
        If Cells(i, 1).Interior.ColorIndex = 38 Then
            For Each rcell In Range(Cells(i, 2), Cells(i, ActiveSheet.UsedRange.Columns.Count))
                If rcell.Interior.ColorIndex = 38 Then
                    blnRed = True
                    Exit For
                Else
                    blnRed = False
                End If
            Next

            If blnRed = False Then
                Cells(i, 1).Interior.Pattern = xlNone
            End If
        End If
    Next
End Sub