循环选定的单元格,检查边框并更改颜色

时间:2016-11-11 09:12:36

标签: excel vba colors border

我正在创建一个工具栏按钮,用于将颜色从白色背景,黑色字体更改为选定区域内的白色字体黑色背景。 (将用于P& L'表,资产负债表等会计表)。

但是我还需要按钮中的一些功能来查看所选的单元格,找到任何现有的边框并将它们变为白色。通过使用布尔值或检查背景颜色是否为黑色,然后将现有边框变为白色来进行Perhabs。我不需要制作任何新的边框,只需要反转现有的边框。

这就是我已经拥有的,但它只是使所有边框变白:

Dim Background As Boolean
Dim cel As Range
Dim selectedRange As Range

Set selectedRange = Application.Selection

With Selection.Borders

    For Each cel In selectedRange.Cells
    If cel.Borders(xlEdgeTop).LineStyle <> xlLineStyleNone Then
            .Color = RGB(255, 255, 255)
        End If

    If cel.Borders(xlEdgeBottom).LineStyle <> xlLineStyleNone Then
            .Color = RGB(255, 255, 255)
        End If

    Next cel
End With

希望你能帮助我:)

1 个答案:

答案 0 :(得分:0)

您正在将颜色应用于Selection.Borders集合中的每个边框,因为这是With变量。只需设置cel.Borders(xlEdgeTop)

的颜色即可
Dim cel As Range
Dim selectedRange As Range

Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
    With cel.Borders
        If .Item(xlEdgeTop).LineStyle <> xlLineStyleNone Then
            .Item(xlEdgeTop).Color = vbWhite
        End If

        If .Item(xlEdgeBottom).LineStyle <> xlLineStyleNone Then
            .Item(xlEdgeBottom).Color = vbWhite
        End If
    End With
Next cel

您还可以使用两个With块:With cel.Borders(xlEdgeTop)With cel.Borders(xlEdgeBottom),然后使用.LineStyle.Color。你也可以完全跳过With块,因为它在这里确实没有节省太多(cel.Borders - &gt; .Item)。