2015-11-07 1 views
0

Я пытаюсь покрасить разные строки в зависимости от оператора if. Пример:Объект «Range» должен двигаться вместе при добавлении новой строки

' # 1 

If (test = True) Then 

    Worksheets("sheet1").Range("A1:J1").Interior.Color = varColor1 

Else 

    Worksheets("sheet1").Range("A1:J1").Interior.Color = varColor2 

End If 


    ' # 2 

If (test2 = True) Then 

    Worksheets("sheet1").Range("A2:J2").Interior.Color = varColor1 

Else 

    Worksheets("sheet1").Range("A2:J2").Interior.Color = varColor2 

End If 

    ' # 3 

    '...etc 

Мой вопрос, если добавить новую строку в листе Excel, значение «Диапазон» становится некорректным. Например, если я добавлю строку между A и B, программа будет окрашивать новую вставленную строку (поскольку эта новая вставленная строка становится B), а фактическая строка B, которую я хочу раскрасить, теперь C. Как я могу убедиться, что когда строка добавляется, правильная строка по-прежнему окрашена. Конечно, я могу изменить значения «Range» вручную, но у меня их много, поэтому для их изменения потребуется очень много времени, должен быть другой способ сделать это ...

ответ

2

Если вы определяете именованный диапазон (Ctrl -F3) XL будет расширять определение, если вы вставляете столбец в пределах этого диапазона.

Worksheets("sheet1").Range("test1_range").Interior.Color = varColor1 

Будьте осторожны, если вы вставляете столбец на левый край именованного диапазона - он не будет включен в именованный диапазон.