【发布时间】:2021-03-05 07:21:57
【问题描述】:
我是 VBA 新手,我需要在 excel 中跟踪所有修改的行。 excel 文件预计将有数百万条记录,而用户预计只有少数列或行会被修改。为了节省时间,我计划只将修改后的记录更新回 sql rest 删除它。我设法让下面的代码按照预期工作,但前提是用户手动修改。如果用户复制并粘贴多行,则仅将第一条记录标记为已修改,其余则不标记。
我要求通过手动或复制粘贴到该工作簿中来跟踪任何更改
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rw As Long
Dim cw As Long
rw = [Sheet1!b8].CurrentRegion.Rows.Count
cw = [Sheet1!b8].CurrentRegion.Columns.Count
lcw = ColumnLetter(cw)
Dim xrng As Range
Set xrng = Range("c1:" &lcw & rw)
If Not Application.Intersect(xrng, Range(Target.Address)) _
is Nothing Then
If Target.Row > 1 Then Cells(Target.Row, 1) = "M"
End If
End If
End Sub
Public Function ColumnLetter(ColumnNumber As Long) As String
ColumnLetter = Split(Cells(1, ColumnNumber).Address(True, False), "$")(0)
End Function
【问题讨论】:
-
不明白你的代码的确切逻辑,但你必须遍历
Target的所有行 -
我的要求是标记每一个用“M”修改的填充行,但我的代码无法复制和粘贴。是的,你已经正确地指出了它我不确定我应该在哪里放置循环。感谢您的回答
标签: excel vba copy-paste