我正在尝试在一个工作表中使用多个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仍然无法使第二段代码正常工作
答案 0 :(得分: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
答案 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
至于你原来的问题,它不应该改变任何东西。
您能提供更多信息吗?