2013-06-05 5 views
1

Я пытаюсь иметь несколько Worksheet_Change на одном листе, однако у меня возникают проблемы с их реализацией.Несколько Worksheet_Change Issue

Я пробовал:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$B$6" Then 
    Select Case Target.Value 
     Case "Yes" 
     Range("DataYes").EntireRow.Hidden = True 
     Range("DataNo").EntireRow.Hidden = False 
     Case "No" 
     Range("DataYes").EntireRow.Hidden = False 
     Range("DataNo").EntireRow.Hidden = True 
     Case "" 
     Range("DataYes").EntireRow.Hidden = True 
     Range("DataNo").EntireRow.Hidden = True 
    End Select 
    End If 


    If Target.Address = "$Q$6" Then 
    Select Case Target.Value 
     Case "TRUE" 
     Range("DataNo").EntireRow.Hidden = False 
     Range("CrComments").EntireRow.Hidden = False 
     Case "FALSE" 
     Range("CrComments").EntireRow.Hidden = True 
    End Select 
    End If 

End Sub 

В этом случае, только первый кусок кода работает. Второе - нет. Нет сообщений об ошибках.

Я также попытался:

Private Sub Worksheet_Change(ByVal Target As Range) 

Select Case Target.Address 

    Case "$B$6" 
     If Range("B6").Value = "Yes" Then 
      Range("DataYes").EntireRow.Hidden = True 
      Range("DataNo").EntireRow.Hidden = False 
     ElseIf Range("B6").Value = "No" Then 
      Range("DataYes").EntireRow.Hidden = False 
      Range("DataNo").EntireRow.Hidden = True 
     ElseIf Range("B6").Value = "" Then 
      Range("DataYes").EntireRow.Hidden = True 
      Range("DataNo").EntireRow.Hidden = True 
     End If 
     End If 

    Case "$Q$6" 
     If Range("Q6").Value = "TRUE" Then 
      Range("CrComments").EntireRow.Hidden = False 
     ElseIf Range("Q6").Value = "FALSE" Then 
      Range("CrComments").EntireRow.Hidden = True 
     End If 
     End If 


End Select 
End Sub 

В этом коде я получил ошибку End if without block if за последний End If первого случая.

Удаление ошибочных Концевые IFs еще не делает второй кусок кода работы

ответ

1

У вас есть два неправильно «End If», здесь фиксированный код:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Select Case Target.Address 

     Case "$B$6" 
      If Range("B6").Value = "Yes" Then 
       Range("DataYes").EntireRow.Hidden = True 
       Range("DataNo").EntireRow.Hidden = False 
      ElseIf Range("B6").Value = "No" Then 
       Range("DataYes").EntireRow.Hidden = False 
       Range("DataNo").EntireRow.Hidden = True 
      ElseIf Range("B6").Value = "" Then 
       Range("DataYes").EntireRow.Hidden = True 
       Range("DataNo").EntireRow.Hidden = True 
      End If 

     Case "$Q$6" 
      If Range("Q6").Value = "TRUE" Then 
       Range("CrComments").EntireRow.Hidden = False 
      ElseIf Range("Q6").Value = "FALSE" Then 
       Range("CrComments").EntireRow.Hidden = True 
      End If 
    End Select 
End Sub 

Что касается вы оригинальный вопрос, он ничего не должен менять.

Не могли бы вы предоставить дополнительную информацию, пожалуйста?

+0

Спасибо, я не получаю никаких ошибок, однако раздел 'Q6' все еще не работает. Раздел 'Q6' - это ячейка, которая изменена на« TRUE »или« FALSE »в зависимости от выбора флажка. Если это правда, строка должна быть не указана. Раздел 'B6' работает,' Q6' - нет. Вот еще код. 'Вариант Явные Sub AssignRownames() Строки ("15:15"). EntireRow.Name = "DataYes" Ряды ("16:16"). EntireRow.Name = "DataNo" Ряды (" 8 : 8 "). EntireRow.Name =" CrComments " End Sub' – pufAmuf

+1

Вы пытались использовать« Истина »и« Неверно »? – Pragmateek

+0

Yup, я даже попробовал «True» 'False' без кавычек. – pufAmuf

2

Значения ячейки «FALSE» и «TRUE» будут считаны как False и True (логические значения, а не строки), поэтому ваш тест на Q6 необходимо изменить.

If Target.Address = "$Q$6" Then 
    Select Case Target.Value 
     Case True 
     Range("DataNo").EntireRow.Hidden = False 
     Range("CrComments").EntireRow.Hidden = False 
     Case False 
     Range("CrComments").EntireRow.Hidden = True 
    End Select 
End If 
+0

Спасибо, но у меня есть ячейка, из которой она читает эту строку. И ячейка написана как TRUE или FALSE. Когда я изменил эту часть кода, раздел 'Q6' все еще не работает. – pufAmuf

+0

Тогда я Не знаю, что еще предложить ... Это сработало для меня. –