Шаг 66 - Движение по диапазону

Выделив диапазон может возникнуть задача пройтись по этому диапазону с целью, например, покраски значений определенного диапазона. Смотрим:

Sub FullShach()

For Each c In Range(addressdiap)

If c.Value > yr1 Then

c.Select

With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

Selection.Font.ColorIndex = yrcolor1

If c.Value > yr2 Then

c.Select

Selection.Font.ColorIndex = yrcolor2

If c.Value > yr3 Then

c.Select

Selection.Font.ColorIndex = yrcolor3

End If

End If

End If

Next c

End Sub

Основа этой функции цикл For Each c In Range(addressdiap), который будет перебирать ячейки в диапазоне и возвращать каждую ячейку в переменную цикла c. Для того, чтобы можно было произвести работу с этой ячейкой ее надо выделить c.Select.

Шаг 67 - Движение по ячейкам

Для движения по таблице используется функция.

переменная.Offset(RowOffset, ColumnOffset)

В качестве переменных может выступать как ячейка так и диапазон (Range) удобно пользоваться этой функцией для смещения относительно текущей ячейки.

Например, смещение ввниз на одну ячейку и выделение ее:

ActiveCell.Offset(1, 0).Select

Если нужно двигаться вверх, то нужно использовать отрицательное число:

ActiveCell.Offset(-1, 0).Select

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

Sub beg()

Dim a As Boolean

Dim d As Double

Dim c As Range

a = True

Set c = Range(ActiveCell.address)

c.Select

d = c.Value

c.Value = d

While (a = True)

ActiveCell.Offset(1, 0).Select

If (IsEmpty(ActiveCell.Value) = False) Then

Set c = Range(ActiveCell.address)

c.Select

d = c.Value

c.Value = d

Else

a = False

End If

Wend

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: