Скрыть определенные строки, если диапазон содержит определенные значения - PullRequest
0 голосов
/ 08 марта 2019

Я хотел бы получить некоторую помощь в автоматизации моей спецификации.

В диапазоне E7: V7 (в дальнейшем, r) у меня одни и те же выпадающие списки, каждый из которых имеет четыре разных значения ("-"; "открыть"; "закрыть"; "оба").

Когда r содержит только "-", я хотел бы, чтобы строки 21:50 были скрыты.

  • "open" показывает строки 21:30
  • "close" показывает строки 31:50
  • "both" показывает строки 21:50

Например:

  • , если E7 = "-",F7 = "открыто", затем отображаются строки 21:30 и скрыто 31:50.
  • если E7 = "-", F7 = "оба", то отображаются все строки.

Надеюсь, это было достаточно ясно.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E7").Value = "-" Then
        Rows("21:50").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "open" Then
        Rows("21:30").EntireRow.Hidden = False
        Rows("31:50").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "close" Then
        Rows("31:50").EntireRow.Hidden = False
        Rows("21:30").EntireRow.Hidden = True
    ElseIf Range("E7").Value = "both" Then
        Rows("21:50").EntireRow.Hidden = False
    End If
End Sub

Этот код работает только для одного критерия, но я надеюсь, что он поможет прояснить ситуацию.

1 Ответ

0 голосов
/ 08 марта 2019

Как указано в моем комментарии: используйте метод Application.Intersect , а также оператор Select Case .

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AffectedCells As Range
    Set AffectedCells = Intersect(Target, Target.Parent.Range("E7:V7"))

    If Not AffectedCells Is Nothing Then
        Dim Cell As Range
        For Each Cell In AffectedCells
            Select Case Cell.Value
                Case "-"
                    Target.Parent.Rows("21:50").Hidden = True
                Case "open"
                    Target.Parent.Rows("21:30").Hidden = False
                    Target.Parent.Rows("31:50").Hidden = True
                Case "close"
                    Target.Parent.Rows("31:50").Hidden = False
                    Target.Parent.Rows("21:30").Hidden = True
                Case "both"
                    Target.Parent.Rows("21:50").Hidden = False
            End Select
        Next Cell
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...