シートの全セルの背景色をクリアする
シートの全セルの背景色をクリアするにはRangeオブジェクトのInterior.ColorIndexプロパティを利用します。
ColorIndexプロパティに定数xlNoneを指定すると背景色がクリアされます。
1 |
Range.Interior.ColorIndex = xlNone |
xlAutoMatic(自動)を指定してもクリアされたように見えますが、グリッド線も白色になってしまうため、クリアというより上塗りのような形になります。
xlNoneの場合
xlAutoMaticの場合
背景色のクリアの基本的なコードは上の通りですが、クリアしたい範囲にはいくつかあります。
シート全体、シートの一部、全シートなどです。
それらについてそれぞれコードを紹介します。
シート全体の背景色をクリアする
アクティブシートの背景色を全てクリアするコードです。
Cellsでシート全体を示します。
UsedRangeを使うと入力セル範囲に絞込みが行われます。
どちらを使っても構いません。
Cellsでのクリア
1 2 3 4 5 6 |
Sub ClearSheetColor() Dim sht As Worksheet Set sht = ActiveSheet sht.Cells.Interior.ColorIndex = xlNone End Sub |
UsedRangeでのクリア
1 2 3 4 5 6 |
Sub ClearSheetColor2() Dim sht As Worksheet Set sht = ActiveSheet sht.UsedRange.Interior.ColorIndex = xlNone End Sub |
シートの一部の背景色をクリアする
シートの1行目から4行目までの背景色はクリアせず、5行目以降をクリアするコードです。
クリアする際にColorIndexプロパティを使うのは同じですが、その対象となるセル範囲の指定方法が異なります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub ClearSheetColor1() Dim sht As Worksheet Dim iRow Dim iCol Set sht = ActiveSheet '// 入力セル範囲の最終行と最終列を取得 iRow = sht.UsedRange.Rows.Count + sht.UsedRange.Row - 1 iCol = sht.UsedRange.Columns.Count + sht.UsedRange.Column - 1 '// 6行目以降の背景色をクリア sht.Range(Range("A5"), Cells(iRow, iCol)).Interior.ColorIndex = xlNone End Sub |
全シートの背景色をクリアする
全シートを指定したい場合は、Worksheetsコレクションをループして各シートに対して背景色のクリア処理を行います。
CellsはUsedRangeでも構いません。
1 2 3 4 5 6 7 |
Sub ClearSheetColor3() Dim sht As Worksheet For Each sht In Worksheets sht.Cells.Interior.ColorIndex = xlNone Next End Sub |