多个Worksheet_Change问​​题

时间:2013-06-05 19:49:23

标签: excel vba

我正在尝试在一个工​​作表中使用多个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 without block if出现End If错误。

删除错误的结束IF仍然无法使第二段代码正常工作

2 个答案:

答案 0 :(得分:2)

“FALSE”和“TRUE”的单元格值将被读取为FalseTrue(布尔值,而不是字符串),因此需要更改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

答案 1 :(得分:1)

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

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

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

您能提供更多信息吗?