首页 > 解决方案 > #VBA Private Sub Worksheet_Change

问题描述

任何善良的灵魂都可以帮助我,我花了相当多的时间搜索并试图让这两条代码工作,但不能。

有什么办法可以组合这两个片段吗?它们有两个不同的目的。

1.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Len(Target) = 10 Then
        Range("I" & Target.Row & ":J" & Target.Row & ", K" & Target.Row & ", M" & Target.Row) = "N"
    End If
End Sub

2.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 12 And Target.Value = "Y" Then
        Target.Offset(0, 1) = Date
    End If
End Sub

我很茫然....

标签: vba

解决方案


您可以尝试将其作为一种组合方法:

当您在宏上加载了 worksheet_change 事件时,您需要在进行更改时禁用警报,否则您可能会发现自己处于无限循环中。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A:A")) Is Nothing Or Target.Column <> 12 Then Exit Sub

    If Len(Target) = 10 Then
        Application.EnableEvents = False
            Range(Cells(Target.Row, "I"), Cells(Target.Row, "K")) = "N"
            Range("M" & Target.Row) = "N"
        Application.EnableEvents = True
    End If

    If Target.Column = 12 And Target.Value = "Y" Then
        Application.EnableEvents = False
            Target.Offset(0, 1) = Date
        Application.EnableEvents = True
    End If

End Sub

推荐阅读