2016-07-06 2 views
1

У меня есть различные выпадающие меню в документе и вам нужно создать двойное условное утверждение.VBA Excel Double Если

Так что я пытаюсь сделать следующее:

If Cell B14 = Option 1 Then unhide Cells B16:B17 
If Cells B17 = Yes Then hide Cells B19:B53 
If Cells B17 = No Then show Cells B19:B34 

Так что, если кто-то выбирает Option 1 из выпадающего меню, то есть другое выпадающее меню, которые появляются, и если они выбирают Yes от второго по его скрыть требуемые ячейки, и если они выбирают No, он отображает необходимые ячейки.

Опции 2 & 3 в первом выпадающем меню не нужно отображать второй раскрывающийся список.

У меня все работает отдельно от двойного if.

Текущий код:

If Target.Address = "$B$14" Then 

    If Range("B14") = "Option 1: Travel Home" Then 
     ActiveSheet.Rows("16:35").EntireRow.Hidden = False 
     ActiveSheet.Rows("36:55").EntireRow.Hidden = True 
    ElseIf Range("B14") = "Option 2: Travel to next city" Then 
     ActiveSheet.Rows("15").EntireRow.Hidden = False 
     ActiveSheet.Rows("16:17").EntireRow.Hidden = True 
     ActiveSheet.Rows("19:35").EntireRow.Hidden = True 
     ActiveSheet.Rows("36").EntireRow.Hidden = False 
     ActiveSheet.Rows("37:55").EntireRow.Hidden = True 
    ElseIf Range("B14") = "Option 3: Make own arrangements" Then 
     ActiveSheet.Rows("15:36").EntireRow.Hidden = True 
     ActiveSheet.Rows("39:55").EntireRow.Hidden = False 
    End If 

End If 

Вариант 2 и 3 работают нормально только вариант 1 не работает, чтобы отобразить/скрыть, Что необходимо, а также то нужно сделать второй вариант выпадающий которой изменяет то, что является показано на рисунке.

+0

Было бы лучше использовать динамическую валидацию для достижения этой цели? –

+0

Вы не можете скрыть отдельные ячейки. Вы хотите скрыть всю строку? –

+3

Возможно, нет необходимости в каких-либо 'IF'. Предполагая, что вы хотите спрятать целые строки: «Диапазон (« B19: B53 »). EntireRow.Hidden = Range (« B17 »). Значение =« Да »и « Диапазон («B19: B34»). EntireRow.Hidden = Not (Range ("B17"). Value = "No") ' –

ответ

3

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

Я также взял на себя смелость предположить, что это событие Worksheet_Change, даже если вы не использовали состояние экспликации как таковое.

Private Sub Worksheet_Change(ByVal Target As Range) 

Select Case Target.Address 

    Case Is = "$B$14" 

     Select Case Right(Left(Target.Value, 8), 1) 

      Case Is = 1 'Option 1 

       Me.Rows("16:17").EntireRow.Hidden = False 

      Case Is = 2 'Option 2 

       Me.Rows("15").EntireRow.Hidden = False 
       Me.Rows("16:17").EntireRow.Hidden = True 
       Me.Rows("19:35").EntireRow.Hidden = True 
       Me.Rows("36").EntireRow.Hidden = False 
       Me.Rows("37:55").EntireRow.Hidden = True 

      Case Is = 3 'Option 3 

       Me.Rows("15:36").EntireRow.Hidden = True 
       Me.Rows("39:55").EntireRow.Hidden = False 

      Case Else 

       Me.Rows("15:55").EntireRow.Hidden = True 

     End Select 


    Case Is = "$B$17" 

     Me.Range("B19:B35").EntireRow.Hidden = Not (Target.Value = "No") 

End Select 

End Sub 

Вот код, чтобы убедиться, что все строки скрыты при открытии книги.

Private Sub Workbook_Open() 

With Me.Worksheets("SheetName") ' change as needed 
    .Rows("1:3").EntireRow.Hidden = True 
    .Rows("15:55").EntireRow.Hidden = True 
End With 

End Sub 
+0

Фантастический Скотт благодарит вас. Единственная проблема заключается в том, что когда я открываю документ, параметры, которые появляются, если второй раскрывающийся список «НЕТ» появился уже, и если я выберу вариант 1 в первом выпадающем списке, он уже загружается с опцией «ДА» ко второму и следующим вопросам ? –

+0

В принципе, мне бы это понравилось, поэтому, когда я открываю документ, все дополнительные вопросы скрыты, и он показывает только до 14 строки (со всем остальным скрытым). Если выбраны Вариант 2 или 3, они работают нормально. Если выбрана опция 1, она отображает только ячейки B16 и B17 и отображает только следующие вопросы, если в B17 выбрано значение NO? –

+0

@AdamMcClelland - Вы заявляете, как бы вы хотели, чтобы он вел себя в последнем предложении (о Варианте 1) в своем последнем комментарии? –

Смежные вопросы