首页 > 解决方案 > 如何将两个私有子 Worksheet_Change(ByVal Target As Range) 合并到一个工作表中?

问题描述

免责声明:我对 VBA 很陌生,所以显而易见的事情可能会在我脑海中浮现。

我正在尝试设置 2 列,当它旁边的列仅在该工作表中接收新数据时,它们会自动更新为当天的日期。

我以我有限的知识尝试创建新变量,以便它有两条“线”可供使用,如果这有意义的话,但它完全停止工作。

有什么方法可以“复制”下面的代码,以便当列 P 更新时,列 O 会更新为今天的日期,而当 D 更改时,列 E 也是如此?如果可能,如果 D 中的文本为“N/A”时 E 列没有更新,那就太好了

任何帮助或指针表示赞赏。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WorkRng As Range
    Dim Rng As Range
    Dim xOffsetColumn As Integer
    Set WorkRng = Intersect(Application.ActiveSheet.Range("P:P"), Target)
    xOffsetColumn = 1
    If Not WorkRng Is Nothing Then
        Application.EnableEvents = False
        For Each Rng In WorkRng
            If Not VBA.IsEmpty(Rng.Value) Then
                Rng.Offset(0, xOffsetColumn).Value = Now
            Else
                Rng.Offset(0, xOffsetColumn).ClearContents
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub

标签: excelvba

解决方案


您需要进行检查,以便您只有 1 worksheet_change,但允许根据目标范围进行单独的操作。尝试类似:

Select Case Target.Column
    Case 15
        'that stuffs
    Case 16
        'that other stuffs
End Select

edtit1是的,@GSerg,这是真的……更新了


推荐阅读