合并 2 个工作表更改事件 Excel VBA

Combining 2 worksheet change events Excel VBA

提问人:Benjamin Leone 提问时间:11/7/2023 最后编辑:BigBenBenjamin Leone 更新时间:11/7/2023 访问量:33

问:

有人可以帮我在下面结合这两个事件吗?我的目标是在将“已完成”输入到 F 列时将我的行移动到另一张工作表。此外,我希望在相应行中的值/字符串发生更改时向 G 列添加上次更新的日期/时间,但我无法弄清楚如何组合它们。请帮忙!

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim AffectedRange As Range
    Set AffectedRange = Intersect(Target, Target.Parent.Range("B3:L5000"))
    Dim Z As Long
    Dim xVal As String
    On Error Resume Next
    

    If Not AffectedRange Is Nothing Then
        Application.EnableEvents = False 'pervent triggering another change event

' Last Updated

    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row < 1 Then Exit Sub
    If Target.Column < 2 Then Exit Sub
    Cells(Target.Row, "G") = Date
    
Next AffectedRange

'MOVING COMPLETED

    'Dim Z As Long
    'Dim xVal As String
    'On Error Resume Next
    
    If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Z = 1 To Target.Count
        If Target(Z).Value > 0 Then
            Call MoveBasedOnValue
        End If
        
          
    Next
    
    Application.EnableEvents = True
    
    

    End If
End Sub
Excel VBA 范围

评论

0赞 taller 11/7/2023
OP 中只有一个 Change 事件。你错过了一些代码吗?
0赞 Benjamin Leone 11/7/2023
我有 Moving Completed 代码,即:'MOVING COMPLETED Dim Z As Long Dim xVal As String On Error Resume Next If Intersect(Target, Range(“F:F”)) is nothing then exit sub Application.EnableEvents = False For Z = 1 To Target.Count If Target(Z)。值 > 0 然后调用 MoveBasedOnValue End If Next 我还有上次更新的事件,即: '上次更新 如果 Target.Cells.Count > 1 然后退出 Sub If Target.Row < 1 然后退出 Sub If Target.Column < 2 然后退出子 Cells(Target.Row, “G”) = Date 我是一个菜鸟,所以我可能会很远。
0赞 Tim Williams 11/7/2023
如果您需要添加代码,请编辑您的问题
1赞 Tim Williams 11/7/2023
If Target.Cells.Count > 1 Then Exit Sub(和类似的行)在关闭事件后退出 Sub,因此任何进一步的更新都不会触发事件处理程序...... 永远不能是 <1,所以你不需要那个测试。 可以用来代替 - 在工作表代码模块中指的工作表。Target.RowMeTarget.ParentMe
1赞 Black cat 11/7/2023
If Target(Z).Value > 0 Then不检查,而不是如果值大于 0,或者如果值是文本,则第一个字母的 ASCII 代码大于 &H30 (48)。 没有 For。CompletedNext AffectedRange

答: 暂无答案