【发布时间】:2018-06-13 21:48:34
【问题描述】:
当列“P”取值“x”时,我遇到了“Worksheet_Change”子问题,该子将整行复制并粘贴到第二个工作表(“已完成”)中。内容如下:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
'If Cell that is edited is in column P and the value is x then
If Target.Column = 16 And Target.Value = "x" Then
'Define last row on completed worksheet to know where to place the row of data
LrowCompleted = Sheets("Completed").Cells(Rows.Count, "A").End(xlUp).Row
'Copy and paste data
Range("A" & Target.Row & ":P" & Target.Row).Copy Sheets("Completed").Range("A" & LrowCompleted + 1)
'Delete Row from Project List
Range("A" & Target.Row & ":P" & Target.Row).Delete xlShiftUp
End If
Application.EnableEvents = True
End Sub
子本身工作正常,但如果我在工作表中的任何位置复制和粘贴,子将被激活,并且我粘贴的行将发送到我的“已完成”工作表。
到目前为止,我一直在玩“if-clause”,但没有任何运气。例如:
If Not Target.Column = 16 And Target.Value = "x" Is Nothing Then
我担心我错过了显而易见的事情,我很感激任何帮助。
感谢和问候
PMHD
【问题讨论】:
-
您正在处理 Target 不仅仅是一个单元格的情况。也许在子的开头用
if target.cont > 1 then exit sub包扎它,或者当目标不止一个单元格时透露你想要发生的事情。' -
很棒的电话,@Jeeped!这使我找到了解决方案。我最终跳过了“退出子”部分,因此我仍然可以在第 16 列中使用“x”激活子。谢谢。
标签: vba excel excel-2013