1

我试图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

删除错误的 End IF 仍然不能使第二段代码工作

4

2 回答 2

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
于 2013-06-05T20:10:18.180 回答
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

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

你能提供更多信息吗?

于 2013-06-05T20:04:47.713 回答