多个单元格值更改以触发宏

时间:2016-10-26 10:57:06

标签: excel vba excel-vba

我在单格中的单元格G3:G4和D15:D10000中有不同的值集。我希望在更改G列或D列时运行两个单独的代码。我如何识别哪些列被更改?

2 个答案:

答案 0 :(得分:4)

在您的工作表代码窗格中

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G3:G4")) Is Nothing Then        
        'code when some cell in range "G3:G4" is changed
    ElseIf Not Intersect(Target, Range("D15:D10000")) Is Nothing Then
        'code when some cell in range "D15:D10000" is changed
    End If
End Sub

答案 1 :(得分:3)

将以下代码放入相关工作表的Worksheet_Change事件中。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim WatchRange                  As Range
Dim IntersectRange              As Range

Set WatchRange = Application.Union(Range("G3:G4"), Range("D15:D10000"))
Set IntersectRange = Intersect(Target, WatchRange)

If Not IntersectRange Is Nothing Then

    Select Case Target.Column
        Case 4 ' column D
            Call A

        Case 7 ' column G
            Call B

    End Select

End If

End Sub

以下是Sub ASub B的示例:

Sub A()

MsgBox "Running Sub A"

End Sub


Sub B()

MsgBox "Running Sub B"

End Sub