工作表更改事件问题(Excel VBA)

时间:2018-06-23 22:51:35

标签: excel vba excel-vba

我已经设置了一个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

但这也不起作用。

我不确定我要去哪里。也许我的逻辑在这种情况下不起作用?有更好的方法吗?

谢谢

1 个答案:

答案 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