行全体が塗りつぶされているExcelシートを指定した範囲だけの塗りつぶしに変える

納入実績表で、営業さんがある案件に背景色をつけたんですけど、
こんなふうに、

行全体を塗りつぶしてしまったので、

並べ替えなどするとこんなふうに、

値の入っていないセルが残ってしまう。

これが気持ち悪いので、値の入ってる列までの塗りつぶしに変更するコードを書きました。
他のシートでも使えるように、何列分の塗りつぶしにするかは最初にユーザーが入力します。

Option Explicit

Sub 背景色範囲変更()

'-----仕様-----
'行全体の背景色を設定しているところを、指定した範囲だけの設定に変える

Const kondo_color = 16776960        '近藤さんが好きな色

Dim column_colored_area As Integer
column_colored_area = InputBox("何列分の色を変えますか?例:A列までは「1」、J列までは「10」", "入力してください")

Dim i As Integer
For i = 2 To Range("A65536").End(xlUp).Row

    With Cells(i, 1)
        If .Interior.Color = vbYellow Then                         'セルの色が黄色だったら
            Rows(i).Interior.Color = xlNone                        '行全体の塗りつぶしをやめる
            Range(Cells(i, 1), Cells(i, column_colored_area)).Interior.Color = vbYellow      '入力した列数分だけ黄色くする
           
        ElseIf .Interior.Color = kondo_color Then
            Rows(i).Interior.Color = xlNone
            Range(Cells(i, 1), Cells(i, column_colored_area)).Interior.Color = kondo_color

        Else
        End If
    End With

Next i
End Sub


…なんか同じ記述が繰り返されるので、もうちょっと整理できそうな気がするんですけど。
あと、最初のインプットボックスで「キャンセル」をした場合の処理を書かないといけないのと、
使われている色が違う時の処理はどうするのか…という問題もあり。

あとやっぱり変数名(定数名)って決めるのむずかしい。

とりあえず実行すると、