我尝试从列中复制单元格A:D,当列E =“接受”时,并将数据粘贴为值,放到另一张纸上。复制行中的某些单元格,满足criterea时,粘贴到新表中
虽然每次我尝试,但它只复制最后一行,我不明白为什么。我会很感激任何帮助。
我的代码如下所示:
Public Sub AcceptLastChangeRequest()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
On Error GoTo errorHandler:
Dim varAnswer As String
varAnswer = MsgBox("Are you sure you wish to accept the most recent Change Request?", vbYesNo, "Accept Change Request")
If varAnswer = vbNo Then
MsgBox ("No changes saved")
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
End If
Dim SourceRange As Range, DestRange As Range
Dim DestSheet As Worksheet, SourceSheet As Worksheet
Dim LastRowDestSheet As Long, i As Long, LastRowSourceSheet As Long
Set DestSheet = ThisWorkbook.Worksheets("Accepted Change Requests")
Set SourceSheet = ThisWorkbook.Worksheets("All Change Requests")
LastRowDestSheet = DestSheet.Cells(DestSheet.Rows.Count, "A").End(xlUp).Row
LastRowSourceSheet = SourceSheet.Cells(SourceSheet.Rows.Count, "E").End(xlUp).Row
For i = 2 To LastRowSourceSheet
If Sheets("All Change Requests").Range("E" & i).Value = "Accepted" Then
Set SourceRange = SourceSheet.Range("A" & i, "D" & i)
Set DestRange = DestSheet.Range("A" & LastRowDestSheet + 1)
SourceRange.Copy
DestRange.PasteSpecial _
Paste:=xlPasteValues, _
operation:=xlPasteSpecialOperationNone, _
skipblanks:=False, _
Transpose:=False
Application.CutCopyMode = False
End If
Next i
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
errorHandler:
MsgBox ("There was an error adding this Change Request")
Resume Next
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
的另一种方法,有可能更快,是使用所述.AutoFilter选择“接受”列E.然后复制/粘贴可见细胞(在列A:d)在一个单一的集团。 –