Excel 将完成的行移动到其他图纸的VBA代码会导致奇怪的行为
免责声明:我不太精通VBA,通过阅读各种博客等,拼凑了以下代码 我的代码“有效”,因为它将状态更改为“完成”的行从活动工作表移动到已完成工作表。这就是代码的要点 当我使用拖动按钮(黑色的小角落)在源工作表(活动工作表)上创建另一行时,问题就出现了。出于某种原因,它将标题行从活动图纸复制到已完成图纸上的新行 这一定是由于复制和粘贴操作,但我不确定它与拖动表以创建行(如果有的话)有什么关系。任何帮助或指导这个VBA业余爱好者将不胜感激Excel 将完成的行移动到其他图纸的VBA代码会导致奇怪的行为,excel,vba,Excel,Vba,免责声明:我不太精通VBA,通过阅读各种博客等,拼凑了以下代码 我的代码“有效”,因为它将状态更改为“完成”的行从活动工作表移动到已完成工作表。这就是代码的要点 当我使用拖动按钮(黑色的小角落)在源工作表(活动工作表)上创建另一行时,问题就出现了。出于某种原因,它将标题行从活动图纸复制到已完成图纸上的新行 这一定是由于复制和粘贴操作,但我不确定它与拖动表以创建行(如果有的话)有什么关系。任何帮助或指导这个VBA业余爱好者将不胜感激 Private Sub Worksheet_Change(ByV
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
'If Cell that is edited is in column H and the value is Done
If Target.Column = 8 And Target.Value = "Done" Then
'Define last row on completed worksheet to know where to place the row of data
LrowCompleted = Sheets("Completed").Cells(Rows.Count, "B").End(xlUp).Row
'Copy and paste data
Range("B" & Target.Row & ":K" & Target.Row).Copy Sheets("Completed").Range("B" & LrowCompleted + 1)
'Delete Row from Project List
Range("B" & Target.Row & ":K" & Target.Row).Delete xlShiftUp
End If
Application.EnableEvents = True
End Sub
错误恢复下一步
隐藏潜在错误。例如,如果Target
是多单元格范围,则Target.Value=“Done”
将抛出错误
或许可以尝试以下方法:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 8 Then Exit Sub
If Target.CountLarge <> 1 Then Exit Sub
On Error GoTo SafeExit
Application.EnableEvents = False
If Target.Value = "Done" Then
Dim LrowCompleted as Long
LrowCompleted = Sheets("Completed").Cells(Rows.Count, "B").End(xlUp).Row
Me.Range("B" & Target.Row & ":K" & Target.Row).Copy ThisWorkbook.Sheets("Completed").Range("B" & LrowCompleted + 1)
Me.Range("B" & Target.Row & ":K" & Target.Row).Delete xlShiftUp
End If
SafeExit:
Application.EnableEvents = True
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果目标为。第8列,则退出Sub
如果Target.CountLarge 1,则退出Sub
错误转到安全出口
Application.EnableEvents=False
如果Target.Value=“完成”,则
Dim LROW已完成,长度为
LrowCompleted=工作表(“已完成”)。单元格(行数,“B”)。结束(xlUp)。行
Me.Range(“B”和Target.Row&“:K”和Target.Row)。复制此工作簿。工作表(“已完成”)。Range(“B”和LrowCompleted+1)
Me.Range(“B”和Target.Row&“:K”和Target.Row)。删除xlShiftUp
如果结束
安全出口:
Application.EnableEvents=True
端接头
错误恢复下一步
隐藏潜在错误。最好实现真正的错误处理。例如,如果Target
是多单元格范围,则会出现错误。