多Worksheet_Change问​​题

我试图在一个Worksheet_Change中有多个Worksheet_Change ,但是我遇到问题实现它们。

我试过了:

 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第一个case的最后一个End If错误,我得到了End if without block if

删除错误的结束IF仍然不会使第二段代码工作

“FALSE”和“TRUE”的单元格值将被读取为FalseTrue (布尔值,而不是string),因此您需要更改Q6上的testing。

 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 

你有两个错误的“如果”,这里是固定的代码:

 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 

至于你原来的问题,它不应该改变任何东西。

你能提供更多的信息吗?