Попробуйте этот код:
Public Sub FormatRange()
Dim myRng As Range
Set myRng = Selection
Dim lc As Long, lr As Long
lc = myRng.Columns.Count
lr = myRng.Rows.Count
myRng.Resize(1, lc).Interior.Color = RGB(153, 0, 0)
myRng.Offset(1, 0).Resize(lr - 1, lc).Interior.Color = RGB(255, 255, 255)
End Sub
myRng
относится к выбранному диапазону, а myRng.Resize()
изменяет количество строк и столбцы ссылаются. Кроме того, myRng.Offset()
перемещает ссылку вниз и вправо на указанную величину.
Таким образом, я взял верхнюю левую ссылку из myRng
и "выбрал" верхнюю строку с помощью .Resize(1,lc)
* 1017. * Я «выбрал» оставшуюся таблицу, переместившись вниз на одну строку и выбрав
lr-1
строк с
.Offset(1,0).Resize(lr-1,lc)
.
ИМХО всегда чистее использовать myRng.Resize(n,m)
вместо Range(myRng.Cells(1,1), myRng.Cells(n,m))
.