2016-11-11 66 views
0

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

但我还需要按钮中的某些功能,通过选定的单元格查找,找到任何现有的边界并将它们变成白色。通过布尔值或某些东西来检查背景颜色是否为黑色,然后将现有边框变为白色。我不需要制作任何新的边框,只需反转现有的边框的颜色即可。

这是我已经有,但它只是让白色所有边界:

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

你到目前为止尝试过什么?您可以轻松检查单元格的背景颜色。找到现有边界是什么意思?你有一些隐藏的边框(即linestyle = xlNone)吗?如果是这样,我认为将他们的颜色设置为白色不应改变可视性。 – arcadeprecinct

+0

谢谢你的回复!是的,我已经得到了背景检查,这工作正常,但我只能找到一种方法来使所有边框变白。猜猜我的努力是找到一种方法来查看选定的单元格,检查是否有边框并将它们涂成白色。 资产负债表等将始终在白色背景下制作,因此“现有边框”将如下所示: https://www.google.dk/search?q=p%26l&espv=2&biw=1680&bih=920&source = lnms&tbm = isch&sa = X&ved = 0ahUKEwjkjerLvaDQAhUEhSwKHfoAAukQ_AUIBigB#imgrc = Tc86lvwlvv40gM%3A 没有隐藏边框,全部可见 – Stef

回答

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 - >.Item)。

+0

谢谢! – Stef