单个工作表中有多个Worksheet_Changes

时间:2019-05-10 15:01:27

标签: excel vba worksheet-function

我需要将两个worksheet_changes放在一张纸上。在阅读中,我看到除非您将它们结合在一起,否则这是不可能的。我一直在尝试这样做,但是遇到了问题。以下是我尝试使用的代码:

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Activate

If Not Application.Intersect(Range("C10:AA10"), Range(Target.Address)) 

Is Nothing Then
        Select Case Target.Value

Case Is = "": Rows("11:55").EntireRow.Hidden = True

 Case Is = "1": Rows("14:55").EntireRow.Hidden = True
                            Rows("11:13").EntireRow.Hidden = False

Case Is = "2":  Rows("17:55").EntireRow.Hidden = True
                            Rows("11:16").EntireRow.Hidden = False

Case Is = "3": Rows("20:55").EntireRow.Hidden = True
                            Rows("11:19").EntireRow.Hidden = False

 Case Is = "4":  Rows("23:55").EntireRow.Hidden = True
                            Rows("11:22").EntireRow.Hidden = False

 Case Is = "5": Rows("26:55").EntireRow.Hidden = True
                            Rows("11:25").EntireRow.Hidden = False

 End Select

If Not Application.Intersect(Range("C63:AA63"), Range(Target.Address)) 

Is Nothing Then

 Select Case Target.Value

 Case Is = "Other": Rows("64").EntireRow.Hidden = False

Rows("64").EntireRow.Hidden = True

End If

End Sub

本质上,我需要根据C10:AA63行中的选择来显示/消失行,然后我需要根据C63:AA63中的选择来显示/消失行

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

有很多错误,请尝试以下代码

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("C10:AA10"), Target) Is Nothing Then
    Select Case Target.Value
        Case "": Rows("11:55").Hidden = True
        Case 1
            Rows("14:55").Hidden = True
            Rows("11:13").Hidden = False
        Case 2
            Rows("17:55").Hidden = True
            Rows("11:16").Hidden = False
        Case 3
            Rows("20:55").Hidden = True
            Rows("11:19").Hidden = False
        Case 4
            Rows("23:55").Hidden = True
            Rows("11:22").Hidden = False
        Case 5
            Rows("26:55").Hidden = True
            Rows("11:25").Hidden = False
    End Select
End If
If Not Intersect(Range("C63:AA63"), Target) Is Nothing Then
    Select Case Target.Value
    Case "Other"
        Rows("64").Hidden = False
        Rows("64").Hidden = True
    End Select
End If

End Sub