【问题标题】:Worksheet Change event issue (Excel VBA)工作表更改事件问题 (Excel VBA)
【发布时间】:2018-06-23 22:51:34
【问题描述】:

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

但这也不起作用。

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

谢谢

【问题讨论】:

    标签: vba excel


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多