При использовании рабочего листа нередко скрывают строки, содержащие данные, которые вы не хотите отображать в текущий момент. Если вы написали макрос, обрабатывающий данные на листе, вы, возможно, задавались вопросом, как пропустить и не обрабатывать строки, которые вы пометили как скрытые.
Это можно сделать следующим образом: проверьте свойство Hidden каждой строки. Если свойство равно True, то строка скрыта; если False, то строка видна.
В качестве примера того, как это работает, предположим, что у вас есть рабочий лист, который вы используете для отслеживания клиентов. Некоторые из этих клиентов считаются активными, а другие неактивными. Чтобы пометить клиента как неактивного, вы скрываете строку, содержащую этого клиента. В какой-то момент вы захотите пронумеровать активных клиентов, и вы захотите сделать это с помощью макроса. Следующий макрос поможет вам:
Sub NumberClients () Dim c As Range Dim j As Integer If Selection.Columns.Count> 1 Then MsgBox «Выберите только те ячейки, которые вы хотите пронумеровать» Exit Sub End If j = 0 For each c In Selection If Not c.Rows.Hidden Then j = j + 1 c.Value = j Else c.Clear End If Next cEnd Sub
Для использования макрос, просто выберите ячейки, в которых будет производиться нумерация. Макрос проверяет, прежде всего, чтобы убедиться, что вы выбрали только ячейки в одном столбце. Затем он проходит по каждой ячейке в выбранном диапазоне. Если строка, содержащая ячейку, не скрыта, то счетчик (j) увеличивается и сохраняется в ячейке. Если строка, содержащая ячейку, скрыта, содержимое ячейки очищается. Ключом к этому макросу является структура If … End If, которая проверяет значение атрибута Hidden.
Источник: