Добрый день форумчане! Просьба помочь с написанием несложного макроса. Суть в чём: есть диапазон скрытия строк (10:33), нужно чтобы при изменении в ячейке "C4" значений от A до D (сделал выпадающий список) скрывались строки по следующему принципу: Если стоит значение "A" - то скрыть все строки не относящиеся к этому диапазону (16:33), для "B" - скрыть строки 10:15 и 22:33, для "С" - 10:21 и 28:33, для D - 10:27. Проще говоря для каждого значения ячейки "C4" должны быть ОТКРЫТЫ только соответствующие ему строки.
Для наглядности в файле раскрасил диапазоны разными цветами. Итого при значении "A" -должен остаться только зеленый диапазон, для значения "B" только желтый и так далее по списку. (PS скрытие строк не по условию цвета а по значению в ячейке "C4")
Добрый день форумчане! Просьба помочь с написанием несложного макроса. Суть в чём: есть диапазон скрытия строк (10:33), нужно чтобы при изменении в ячейке "C4" значений от A до D (сделал выпадающий список) скрывались строки по следующему принципу: Если стоит значение "A" - то скрыть все строки не относящиеся к этому диапазону (16:33), для "B" - скрыть строки 10:15 и 22:33, для "С" - 10:21 и 28:33, для D - 10:27. Проще говоря для каждого значения ячейки "C4" должны быть ОТКРЫТЫ только соответствующие ему строки.
Для наглядности в файле раскрасил диапазоны разными цветами. Итого при значении "A" -должен остаться только зеленый диапазон, для значения "B" только желтый и так далее по списку. (PS скрытие строк не по условию цвета а по значению в ячейке "C4")bosikan
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$4" Then Rows("10:33").EntireRow.Hidden = False If Target.Value = "A" Then Rows("16:33").EntireRow.Hidden = True End If If Target.Value = "B" Then Range("A22:A33,A10:A15").EntireRow.Hidden = True End If If Target.Value = "C" Then Range("A28:A33,A10:A21").EntireRow.Hidden = True End If If Target.Value = "D" Then Range("A10:A27").EntireRow.Hidden = True End If End If End Sub
[/vba]
Вроде написал... осенило...
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$4" Then Rows("10:33").EntireRow.Hidden = False If Target.Value = "A" Then Rows("16:33").EntireRow.Hidden = True End If If Target.Value = "B" Then Range("A22:A33,A10:A15").EntireRow.Hidden = True End If If Target.Value = "C" Then Range("A28:A33,A10:A21").EntireRow.Hidden = True End If If Target.Value = "D" Then Range("A10:A27").EntireRow.Hidden = True End If End If End Sub
bosikan, Вы молодец, что сами придумали и что поделились, но все-таки - Прочитайте Правила форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)
bosikan, Вы молодец, что сами придумали и что поделились, но все-таки - Прочитайте Правила форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)_Boroda_
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [c4]) Is Nothing And Target.Count = 1 Then Dim a As Range: Set a = Rows("10:15") Dim b As Range: Set b = Rows("16:21") Dim c As Range: Set c = Rows("22:27") Dim d As Range: Set d = Rows("28:33") Select Case (Target) Case "A": a.EntireRow.Hidden = False: b.EntireRow.Hidden = True: c.EntireRow.Hidden = True: d.EntireRow.Hidden = True Case "B": a.EntireRow.Hidden = True: b.EntireRow.Hidden = False: c.EntireRow.Hidden = True: d.EntireRow.Hidden = True Case "C": a.EntireRow.Hidden = True: b.EntireRow.Hidden = True: c.EntireRow.Hidden = False: d.EntireRow.Hidden = True Case "D": a.EntireRow.Hidden = True: b.EntireRow.Hidden = True: c.EntireRow.Hidden = True: d.EntireRow.Hidden = False
End Select End If End Sub
[/vba]
И еще подсказали на другом форуме:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [c4]) Is Nothing And Target.Count = 1 Then Dim a As Range: Set a = Rows("10:15") Dim b As Range: Set b = Rows("16:21") Dim c As Range: Set c = Rows("22:27") Dim d As Range: Set d = Rows("28:33") Select Case (Target) Case "A": a.EntireRow.Hidden = False: b.EntireRow.Hidden = True: c.EntireRow.Hidden = True: d.EntireRow.Hidden = True Case "B": a.EntireRow.Hidden = True: b.EntireRow.Hidden = False: c.EntireRow.Hidden = True: d.EntireRow.Hidden = True Case "C": a.EntireRow.Hidden = True: b.EntireRow.Hidden = True: c.EntireRow.Hidden = False: d.EntireRow.Hidden = True Case "D": a.EntireRow.Hidden = True: b.EntireRow.Hidden = True: c.EntireRow.Hidden = True: d.EntireRow.Hidden = False