我正在构建一个工作表,它将跟踪我们的传入预告片并将这些信息放在仪表板上。我有VBA设置,当用户将A列中的单元格从Here更改为Closed时,它会将该行复制到保留预告片历史记录的下一页。
我的问题是,在复制行时,已完成页面上的VBA时间戳未更新。我知道vba有效,因为我可以更改已完成工作表上的预告片编号,它将触发vba并显示时间戳。但是,当从仪表板表复制行时,我需要显示时间戳。
我是否遗漏了需要打开的内容,这有助于触发时间戳?
由于
编辑 - 抱歉,我没有添加代码。这是我在完成的工作表上的时间戳
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C2:C10000")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
With Cells(Target.Row, 10)
.Value = Now
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
End With
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
我的信息中心页面的代码,用于复制
上的行Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A2:A5000")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
Dim NR As Long
With Application
.EnableEvents = False
.ScreenUpdating = False
Select Case Target.Value
Case "Closed"
Range("A" & Target.Row & ":z" & Target.Row).Copy _
Worksheets("Completed").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete Shift:=xlUp
End Select
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
答案 0 :(得分:1)
这是我提出的解决方案。我不明白为什么你需要有两个工作表函数才能满足要求。将此代码放在仪表板工作表中,它将复制并粘贴到“已完成”工作表。我在代码中添加了一些内容。首先,错误处理,如果有错误并且.EnableEvents = False
是执行的最后一行之一,后续事件将不会触发,您将不会对自己感到满意。我还添加了一些似乎在您的代码中遗漏的End If
。我在代码中添加了一些注释,以便您了解我在哪里进行了更改。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
If Intersect(Target, Range("A2:A5000")) Is Nothing _
Then Exit Sub
If Target.Count > 1 Then
Exit Sub
End If
If Target = "" Then
Exit Sub
End If
Dim NR As Long
With Application
.EnableEvents = False
.ScreenUpdating = False
Select Case Target.Value
Case "Closed"
Range("A" & Target.Row & ":z" & Target.Row).Copy _
Worksheets("Completed").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
'get the last cell used.
Set lastCell = Worksheets("Completed").Range("A" & Rows.Count).End(xlUp)
'new line of code
lastCell.Offset(0, 10).Value = Now
lastCell.Offset(0, 10).NumberFormat = "mm/dd/yyyy hh:mm:ss"
Target.EntireRow.Delete Shift:=xlUp
End Select
.EnableEvents = True
.ScreenUpdating = True
End With
Exit Sub
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "You have encountered an error. Please notify admin"
End Sub