bre*_*ded 2 excel vba excel-vba
我有一个格式很好的单元格范围,边框线的权重不同(其中一些中等厚度,有些很薄,没有特殊的图案)。我想运行一个宏,将边框的颜色更改为灰色,但是每次执行此操作时,它都会自动将所有边框的权重更改为xlThin。我想保留原始的线条粗细,这样就不必遍历并将各个线条改回xlMedium了,这很麻烦。
有人可以帮我吗?这可能吗?
我目前拥有的代码很简单,并且可以正确更改颜色。即使我根本不指定线宽或线型,它也会自动更改线宽:
Range("NamedRange").Borders.Color = RGB(150, 150, 150)
在我的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
Run Code Online (Sandbox Code Playgroud)
它还会为您改变尺寸吗?
编辑:嗯,我怀疑您的代码中还有其他事情,因为我可以为命名范围重新着色而不会影响边框。但是,仅因为我已经在尝试其他方法,您也可以使用这些子代码(并根据需要进行调整)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11271 次 |
| 最近记录: |