1

我是 VBA 新手,有两个独立工作的小脚本,但我无法让它们同时工作(因为我不知道该怎么做!)

脚本 1:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("AE49")) Is Nothing Then Exit Sub

    Select Case Target.Value
       Case 1
          Range("A50:A52").EntireRow.Hidden = False
          Range("A53:A55").EntireRow.Hidden = True
       Case 2
          Range("A50:A53").EntireRow.Hidden = False
          Range("A54:A55").EntireRow.Hidden = True
       Case 3
          Range("A50:A54").EntireRow.Hidden = False
          Range("A55").EntireRow.Hidden = True
       Case 4
          Range("A50:A55").EntireRow.Hidden = False
    End Select
End Sub

脚本 2:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("AE25")) Is Nothing Then Exit Sub

    Select Case Target.Value
       Case 1
          Range("A26:A28").EntireRow.Hidden = False
          Range("A29:A35").EntireRow.Hidden = True
       Case 2
          Range("A26:A29").EntireRow.Hidden = False
          Range("A30:A35").EntireRow.Hidden = True
       Case 3
          Range("A26:A30").EntireRow.Hidden = False
          Range("A31:A35").EntireRow.Hidden = True
       Case 4
          Range("A26:A31").EntireRow.Hidden = False
          Range("A32:A35").EntireRow.Hidden = True
       Case 5
          Range("A26:A32").EntireRow.Hidden = False
          Range("A33:A35").EntireRow.Hidden = True
       Case 6
          Range("A26:A33").EntireRow.Hidden = False
          Range("A34:A35").EntireRow.Hidden = True
       Case 7
          Range("A26:A34").EntireRow.Hidden = False
          Range("A35").EntireRow.Hidden = True
       Case 8
          Range("A26:A35").EntireRow.Hidden = False
    End Select
End Sub

我将这些直接加载到 VBA 编辑器的“查看代码”位中,因为我不知道如何使用模块。

我还想要另一个脚本,如果 Z40 的值为 PowerPoint 或 Verbal,它将取消隐藏第 41 行,如果 Z40 的值为 None,将隐藏第 41 行。

谢谢你们!

4

1 回答 1

1

那么这应该是非常基本的:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Call Script1(Target)
    Call Script2(Target)
End Sub


Private Sub Script1(ByVal Target As Range)

    If Intersect(Target, Range("AE49")) Is Nothing Then Exit Sub

    Select Case Target.Value
       Case 1
          Range("A50:A52").EntireRow.Hidden = False
          Range("A53:A55").EntireRow.Hidden = True
       Case 2
          Range("A50:A53").EntireRow.Hidden = False
          Range("A54:A55").EntireRow.Hidden = True
       Case 3
          Range("A50:A54").EntireRow.Hidden = False
          Range("A55").EntireRow.Hidden = True
       Case 4
          Range("A50:A55").EntireRow.Hidden = False
    End Select
End Sub

Private Sub Script2(ByVal Target As Range)

    If Intersect(Target, Range("AE25")) Is Nothing Then Exit Sub

    Select Case Target.Value
       Case 1
          Range("A26:A28").EntireRow.Hidden = False
          Range("A29:A35").EntireRow.Hidden = True
       Case 2
          Range("A26:A29").EntireRow.Hidden = False
          Range("A30:A35").EntireRow.Hidden = True
       Case 3
          Range("A26:A30").EntireRow.Hidden = False
          Range("A31:A35").EntireRow.Hidden = True
       Case 4
          Range("A26:A31").EntireRow.Hidden = False
          Range("A32:A35").EntireRow.Hidden = True
       Case 5
          Range("A26:A32").EntireRow.Hidden = False
          Range("A33:A35").EntireRow.Hidden = True
       Case 6
          Range("A26:A33").EntireRow.Hidden = False
          Range("A34:A35").EntireRow.Hidden = True
       Case 7
          Range("A26:A34").EntireRow.Hidden = False
          Range("A35").EntireRow.Hidden = True
       Case 8
          Range("A26:A35").EntireRow.Hidden = False
    End Select
End Sub
于 2013-08-06T11:10:48.433 回答