在不更改线型/重量的情况下更改范围的边框颜色

时间:2017-01-03 14:37:36

标签: excel vba excel-vba

我有一个格式很好的单元格范围,具有不同的边界线权重(其中一些是中等厚度,有些是薄的,没有特定的图案)。我想运行一个将边框颜色更改为灰色的宏,但每次执行此操作时,它会自动将所有边框权重更改为xlThin。我想保持原来的线条厚度,所以我不必经历并将相应的线条更改回xlMedium,这将是乏味的。

有人可以帮帮我吗?这可能吗?

我目前的代码很简单,它可以正确地改变颜色。它也会自动改变线宽,即使我没有指定重量或线条样式: Range("NamedRange").Borders.Color = RGB(150, 150, 150)

2 个答案:

答案 0 :(得分:4)

这在我的Excel 2016上,只会改变单元格边框的颜色,而不会改变大小:

Sub changeColorOnly()
Dim rng As Range, cel As Range
Set rng = Range("C6:C9")

For Each cel In rng
    cel.Borders.Color = RGB(150, 150, 150)
Next cel

End Sub

它是否仍会改变你的尺寸?

编辑:嗯,我怀疑你的代码中还有其他东西,因为我可以重新着色一个命名范围,而不影响边界。但是,仅仅因为我已经在开发另一种替代方案,你也可以使用这些潜艇(并根据需要进行调整)

Dim brdrTop, brdrLeft, brdrRight, brdrBtm, brdrInside

Sub changeColor()
saveBorderSize Range("myNamedRange")
Range("MyNamedRange").Borders.Color = RGB(150, 150, 150)
resetBorderSize Range("myNamedRange")
End Sub

Private Sub saveBorderSize(cel As Range)
brdrTop = cel.Borders(xlEdgeTop).Weight
brdrLeft = cel.Borders(xlEdgeLeft).Weight
brdrRight = cel.Borders(xlEdgeRight).Weight
brdrBtm = cel.Borders(xlEdgeBottom).Weight
brdrInside = cel.Borders(xlInsideHorizontal).Weight
End Sub

Private Sub resetBorderSize(cel As Range)
cel.Borders(xlEdgeTop).Weight = brdrTop
cel.Borders(xlEdgeLeft).Weight = brdrLeft
cel.Borders(xlEdgeRight).Weight = brdrRight
cel.Borders(xlEdgeBottom).Weight = brdrBtm
cel.Borders(xlInsideHorizontal).Weight = brdrInside
End Sub

答案 1 :(得分:0)

尝试.Borders.Color = RGB(216,216,216)

我运行了以下脚本来尝试确定与普通网格线最接近的颜色。我的眼睛不好,所以请自己检查一下以找到最佳颜色。顺便说一句,我同意MS否决违反边框颜色的理由是没有意义的。愤怒的员工和太多的官僚主义-这是我的理论。

Sub borcol()
    Dim i As Integer
    For i = 1 To 250
        ActiveCell.Borders.Color = RGB(i, i, i)
        ActiveCell.Offset(1, 0).Select
    Next i
End Sub