Здравствуйте. Как сделать следующее. На листе "БД" в диапазон (В2:В19) вводятся данные. Если в ячейке этого диапазона нет значения (ячейка пустая), тогда на листе "Скрыть" нужно скрыть строку соответствующего диапазона. Если ячейка диапазона (В2:В19) заполнена - отображаем соответствующую строку на листе "Скрыть". Например: если ячейка "В2" пустая - скрываем строку "12" (лист "Скрыть"). Если ячейка "В3" заполнена - открываем строку "13" (лист"Скрыть"). Спасибо.
Макрос
Sub Макрос()
Dim rng1 As Range, rng2 As Range
Dim i As Long
'1. Отключение монитора, чтобы ускорить макрос.
Application.ScreenUpdating = False
'2. Присваиваем имена нужным диапазонам для удобства написания макроса.
Set rng1 = Worksheets("БД").Range("B2:B19")
Set rng2 = Worksheets("Скрыть").Range("C12:C29")
' Двигаемя по строкам диапазона "rng1".
For i = 1 To rng1.Rows.Count
'3. Если в ячейке пусто.
' CStr используется, чтобы не было run-time-ошибки, если в эксель-ячейке будет эксель-ошибка.
If CStr(rng1.Cells(i, 1).Value) = "" Then
' Rows(i) - в нашем случае это строка, которая состоит только
' из одного столбца, т.к. диапазон "rng2" состоит из одного столбца.
' Чтобы обратиться к целой строке, используется "EntireRow".
rng2.Rows(i).EntireRow.Hidden = True
'4. Если в ячейке не пусто.
Else
' Отображение строки.
rng2.Rows(i).EntireRow.Hidden = False
End If
Next i
'5. Вкл. монитора.
Application.ScreenUpdating = True
End Sub