2

Попытка следовать некоторым советам, основанным на предыдущем посте (код VBA, чтобы скрыть или показать строки на основе значения ячейки), чтобы создать макрос, чтобы я мог показать / скрыть определенные строки на основе раскрывающегося списка. Я довольно близок к тому, чтобы иметь его, но по крайней мере 1 часть моей формулы не работает. Вот что я использую:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("D13").Value = "Unlimited" Then
         Rows("77").EntireRow.Hidden = True
    ElseIf Range("D13").Value = "Unlimited" Then
        Rows("78:82").EntireRow.Hidden = False
    End If
    If Range("D13").Value = "Limited" Then
        Rows("78:82").EntireRow.Hidden = True
    ElseIf Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = False
    End If
    If Range("D13").Value = "Select one" Then
        Rows("78:82").EntireRow.Hidden = False
    ElseIf Range("D13").Value = "Select one" Then
        Rows("77").EntireRow.Hidden = False
    End If
End Sub

С помощью этой формулы я смотрю на то, какие строки отображаются под выпадающим списком, в зависимости от того, что выбрал пользователь. Ячейка с выпадающим списком - D13. Имеет 3 возможных значения: ограниченное, неограниченное и выберите одно. Вот к чему я стремлюсь:

  • Выберите один: все строки с 77-82 видны
  • Ограничено: строка 77 видна, строки 78-82 скрыты
  • Неограниченно: строка 77 скрыта, строки 78-82 видны

Приведенный выше код, кажется, работает несколько противоречиво: не уверен, что функции, которые я установил для каждого раскрывающегося списка, неожиданно перекрывают друг друга? В настоящее время мои функции работают, как и ожидалось, только при переходе от выбора одного -> ограниченного / неограниченного, но я не могу заставить их продолжать работать, если впоследствии вы переключитесь на другой выбор.

Любая помощь была бы очень признательна! В данный момент рву волосы немного над этим ха-ха. Заранее спасибо :)

2 ответа2

0

Первая строка в коде ниже обрабатывает Worksheet_Change. Это гарантирует, что только одна ячейка была изменена и что ячейка была D13.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("D13")) Is Nothing Or Target.Cells.Count > 1 Then
        Exit Sub

    ElseIf Range("D13").Value = "Select One" Then
        Rows("77:82").EntireRow.Hidden = False

    ElseIf Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = False
        Rows("78:82").EntireRow.Hidden = True    

    ElseIf Range("D13").Value = "Unlimited" Then
        Rows("77").EntireRow.Hidden = True
        Rows("78:82").EntireRow.Hidden = False   

    End If

End Sub

Обратите внимание, что приведенный выше код должен быть скопирован в объект Worksheet для любого листа, на котором находится раскрывающийся список.

Надеюсь, это поможет, и удачи.

-1

Вы можете использовать этот простой макрос, чтобы скрыть / показать определенные строки.

Private Sub Hide_Unhide()

  If Range("D13").Value = "Select One" Then
       Rows("77:82").EntireRow.Hidden = false
  End if

  If Range("D13").Value = "Limited" Then
        Rows("77").EntireRow.Hidden = false
        Rows("78:82").EntireRow.Hidden = true    

  ElseIf Range("D13").Value = "Unlimited" Then
        Rows("77").EntireRow.Hidden = true
        Rows("78:82").EntireRow.Hidden = False   

  End If

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .