Excel Макрос VBA: Скрытие строк по условию.

Автор Amator, 28 мая 2014, 22:42

Amator

Здравствуйте. Как сделать следующее. На листе "БД" в диапазон (В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
[свернуть]

Amator