提问人:Benjamin Leone 提问时间:11/7/2023 最后编辑:BigBenBenjamin Leone 更新时间:11/7/2023 访问量:33
合并 2 个工作表更改事件 Excel VBA
Combining 2 worksheet change events Excel VBA
问:
有人可以帮我在下面结合这两个事件吗?我的目标是在将“已完成”输入到 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
答: 暂无答案
评论
If Target.Cells.Count > 1 Then Exit Sub
(和类似的行)在关闭事件后退出 Sub,因此任何进一步的更新都不会触发事件处理程序...... 永远不能是 <1,所以你不需要那个测试。 可以用来代替 - 在工作表代码模块中指的工作表。Target.Row
Me
Target.Parent
Me
If Target(Z).Value > 0 Then
不检查,而不是如果值大于 0,或者如果值是文本,则第一个字母的 ASCII 代码大于 &H30 (48)。 没有 For。Completed
Next AffectedRange