我想知道是否有人可以帮助我。
我正在使用下面的代码跟踪对Excel工作表的更改,当B5:Q2000范围内的任何单元格的值自动将日期插入“A”列并将单词“否”插入“AE”列时改变了。
Option Explicit
Public preValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range, res As Variant
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next
If Not Intersect(Target, Range("B5:Q2000")) Is Nothing Then
If Target.Value <> preValue And Target.Value <> "" Then
Application.EnableEvents = False
Range("A5:A" & Target.Row).Value = Date
Range("AE5:AE" & Target.Row).Value = "No"
Application.EnableEvents = True
Target.ClearComments
' Target.AddComment.Text Text:="Previous Value was " & preValue & Chr(10) & "Revised " & Format(Date, "dd-mm-yyyy") & Chr(10) & "By " & Environ("UserName")
Target.Interior.ColorIndex = 35
End If
End If
On Error GoTo 0
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then preValue = Target.Value
End Sub
不幸的是,我遇到了一个我不确定如何解决的问题。
如果用户将数据插入单元格D5和D10,则日期和单词“否”将添加到这两行的正确列(A和AE)中。
然而,遗憾的是,即使用户没有在这些行上输入任何其他数据,“No”值和日期也会添加到这些列之间,即D6-D9之间的行,而且我不确定问题所在。
我只是想知道是否有人可以看一下这个并就如何解决这个问题提供一些指导。
非常感谢和亲切的问候
答案 0 :(得分:0)
您当前的代码正在应用从A5
和AE5
到Target's
行开始的更改。要使代码仅更改所选单元格的行,请更改此:
Range("A5:A" & Target.Row).Value = Date
Range("AE5:AE" & Target.Row).Value = "No"
到此:
Range("A" & Target.Row).Value = Date
Range("AE" & Target.Row).Value = "No"
此外,您似乎没有使用变量Cell
或res
。您可能希望删除该行代码。