我已经设置了一个worksheet_change vba代码以跟踪Sheet1列(F)中的所有更改。这个想法是在Col(F)上的任何地方输入任何新值,输入的值将被转移到管理表Col(S)中的日志中。
我的代码:
Dim cell As String
Private Sub Worksheet_Change(ByVal Target As range)
If Not Intersect(Target, Me.range("F:F")) Is Nothing Then
cell = Target.address
Dim LR As Long
LR = Sheets("Admin").Cells(Rows.count, "S").End(xlUp).row
With Worksheets("Admin")
For i = 7 To LR
If IsEmpty(.Cells(i, 19).Value) Then
.range(i, 19).Value = Sheets("Sheet1").range(cell)
Else
GoTo nextitr
End If
nextitr:
Next i
End With
End If
End Sub
我已经做了一些研究,并且尝试用以下代码封装我的代码:
Application.EnableEvents = False
'code'
Application.EnableEvents = True
但这也不起作用。
我不确定我要去哪里。也许我的逻辑在这种情况下不起作用?有更好的方法吗?
谢谢
答案 0 :(得分:1)
这是一种更简单的方法。无需循环,检查单元格是否为空或存储Target.Address
。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
For Each rng In Target
If Not Intersect(rng, Me.Range("F:F")) Is Nothing Then
Sheets("Admin").Cells(Rows.Count, "S").End(xlUp).Offset(1).Value = rng.Value
End If
Next rng
End Sub