2013-04-04 87 views
1

我已经反向工程,并开发了一个代码感谢您在这里的所有努力,但我已经摆脱了一件小事。从WS2复制时我想要执行的操作是粘贴为特殊的,因为我不想导出导致工作簿崩溃的列AD:AR中包含的所有公式。粘贴特殊只有特定范围

Sub Copyandpaste() 
    Dim LastRow As Long 
    Dim ws1 As Worksheet, ws2 As Worksheet 

    Set ws1 = ActiveWorkbook.Sheets("RAW DATA") 
    Set ws2 = ActiveWorkbook.Sheets("DATA INPUT") 

    LastRow = ws1.UsedRange.Rows.Count 

    With ws2 
     .Range("A2:AR2" & .Cells(Rows.Count, "G").End(xlUp).Row).Copy Destination:=ws1.Range("A" & LastRow + 1) 
     For Each WS In ThisWorkbook.Worksheets 
      For Each PT In WS.PivotTables 
       PT.RefreshTable 
      Next PT 
     Next WS 
    End With 
End Sub 
+0

您提到'AD:AR',但代码中说'A:AR'? – 2013-04-04 09:41:48

+0

添加.Value? Destination:= ws1.Range(“A”&LastRow + 1).Value – 2013-04-04 09:43:35

+0

这里有一些问题:'.Range(“A2:AR2”&.Cells(Rows.Count,“G”)。End(xlUp) .Row)'。请检查它... – 2013-04-04 10:09:29

回答

0

这是你正在尝试?

Sub Copyandpaste() 
    Dim ws1LRow As Long, ws2LRow As Long 
    Dim ws1 As Worksheet, ws2 As Worksheet 

    Set ws1 = ThisWorkbook.Sheets("RAW DATA") 
    Set ws2 = ThisWorkbook.Sheets("DATA INPUT") 

    With ws1 
     ws1LRow = .Cells.Find(What:="*", _ 
        After:=.Range("A1"), _ 
        Lookat:=xlPart, _ 
        LookIn:=xlFormulas, _ 
        SearchOrder:=xlByRows, _ 
        SearchDirection:=xlPrevious, _ 
        MatchCase:=False).Row + 1 
    End With 

    With ws2 
     ws2LRow = .Range("G" & .Rows.Count).End(xlUp).Row 

     .Range("A2:AR" & ws2LRow).Copy 

     ws1.Range("A" & ws1LRow).PasteSpecial xlPasteValues 

'  For Each WS In ThisWorkbook.Worksheets 
'   For Each PT In WS.PivotTables 
'    PT.RefreshTable 
'   Next PT 
'  Next WS 
    End With 
End Sub 
+0

感谢代码,它的工作很棒。是否有一种调整方式,以便在完成后不会使复制选项保持活动状态。 Probaby问太多我知道。 – Werra2006 2013-04-04 12:09:36

+0

在完成粘贴后添加以下行'Application.CutCopyMOde = False :) – 2013-04-04 12:11:08