セルの値が変わったら背景色を変えて明示
上記のように同じ値が連続する場合に、値が変わったところが分かりやすいと資料が見やすくなります。
値が変わったことを示す方法にはいくつかありますが、ここでは2色使って値が変わるたびに交互に色を付けるようにします。
実際に資料を作成する場合、列は複数あることの方が多く、左右の列にも色を付けたいことの方が多いので、左右の列にも色を付ける場合のコードを紹介します。
値が変わったら背景色を交互に設定するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
Sub SetColorSameKey() Dim iColCount '// 選択セル範囲の列数 Dim iRowCount '// 選択セル範囲の行数 Dim iRow '// 行ループカウンタ Dim iCol '// 列ループカウンタ Dim rSelect As Range '// 選択セル範囲 Dim r As Range '// セル選択範囲の一番左の列の現在行Rangeオブジェクト Dim sLastKey '// 前回行の各列の連結文字列(同一判定キー) Dim sNowKey '// 今回行の各列の連結文字列(同一判定キー) Dim iColor '// 背景色 Dim iColorFirst '// 1色目の背景色 Dim iColorSecond '// 2色名の背景色 Dim iLeftExpand '// 選択セル範囲より左側で背景色を設定したい列数 Dim iRightExpand '// 選択セル範囲より右側で背景色を設定したい列数 '// 初期値設定 iColorFirst = RGB(255, 255, 204) iColorSecond = RGB(255, 204, 255) iLeftExpand = 1 '// 選択範囲より1列左側も背景色を設定 iRightExpand = 2 '// 選択範囲より2列右側も背景色を設定 '// 選択セル範囲をRangeオブジェクトに設定 Set rSelect = Selection '// 選択セル範囲の行数と列数を取得 iRowCount = rSelect.Rows.Count iColCount = rSelect.Columns.Count '// 選択行数ループ For iRow = 0 To iRowCount - 1 '// 現在行の一番左のセルをRangeオブジェクトに設定 '// 選択セル範囲の左右背景色設定の基点セルとする Set r = rSelect.Cells(iRow + 1, 1) '// 前回キー更新 sLastKey = sNowKey '// 今回キー設定用に初期化 sNowKey = "" '// 選択列数ループ For iCol = 0 To iColCount - 1 '// セル値を文字列として今回キーに連結 sNowKey = sNowKey & CStr(rSelect.Cells(iRow + 1, iCol + 1).Value) Next '// 前回行と今回行のセル値が異なる場合 If sLastKey <> sNowKey Then '// 設定背景色が1色目の場合 If iColor = iColorFirst Then '// 2色目を設定 iColor = iColorSecond Else '// 1色目を設定 iColor = iColorFirst End If End If '// 左側の拡張セルへの背景色を設定 Range(r.Offset(0, -1 * iLeftExpand), r.Offset(0, -1)).Interior.Color = iColor '// 選択セル範囲の現在行の背景色を設定 rSelect.Range(Cells(iRow + 1, 1), Cells(iRow + 1, iColCount)).Interior.Color = iColor '// 右側の拡張セルへの背景色を設定 Range(r.Offset(0, iColCount), r.Offset(0, iColCount - 1 + iRightExpand)).Interior.Color = iColor Next End Sub |
処理自体はコメントに書いているので省略しますが、選択範囲外への背景色の設定方法について説明します。
17行目と18行目で背景色をRGB関数を使って設定しています。ここを変更すれば別の色に変えられます。
19行目と20行目の設定値で、選択範囲外の左右にどれだけ背景色を設定するかを指定します。
ここでは選択範囲の外側の左に1列、右に2列も背景色を設定するようにしています。
使い方
まず、色を変えたい部分を選択します。
そして、上のマクロを実行します。実行すると以下のように背景色が設定されます。B列だけでなく、左のA列と右のC、D列にも背景色が設定されます。