これは、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
ことができ、その理由だけで線種を保存しません変数を変更した後、色の変更後にリセットしますか? – BruceWayne
迷惑に見えます。 @ブルースウェインの考えは良いです。これは、重力だけを残しながら境界線の色を変更するサブに抽象化することができます。 –
@ BruceWayne、アイデアのおかげで、私はそれを格納する方法を知らない。私はバリアントとして.Borders.Weightを格納しようとしましたが、 "2"として保存します。私はこれをどのようにして展開することができますか? – brettarded