如何在没有宏触发器的情况下使用VBA代码

时间:2019-05-02 14:11:52

标签: excel vba

当从下拉列表中选择的值发生更改并且代码可以正常工作时,我目前正在使用以下VBA运行宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D5")) Is Nothing Then
        Select Case Range("D5")
            Case "2008": Macro1
            Case "2015": Macro1
        End Select
    End If
    End Sub

但是,当另一个单元格发生变化(也是下拉菜单)时,我想运行以下事件,该代码被编写为隐藏列,这是附加代码的片段:

Sub hideColumnsBasedOnConditionZero()
LastColumn = 11 'Last Column
For i = 1 To LastColumn 'Lopping through each Column
    'Hide all the columns with the values as 0 in Row 11
    If Cells(1, i) = 0 And Cells(1, i) <> "" Then Columns(i).EntireColumn.Hidden = True
Next
End Sub

有人可以告诉我如何实现吗?第二个代码有效,但是我无法激活它,因为第一个代码正在使用更改功能,并且特定于另一个单元格。

1 个答案:

答案 0 :(得分:1)

您可以将其添加到您的第一个活动中

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastColumn As Long

    With Me
        If Not Intersect(Target, .Range("D5")) Is Nothing Then
            Select Case .Range("D5")
                Case "2008", "2015": Macro1
            End Select
        ElseIf Not Intersect(Target, .Range("Your Other Range")) Is Nothing Then
            Call hideColumnsBasedOnConditionZero
        End If
    End With
End Sub