2016-12-01 351 views
2

我一直在尋找這5個多小時,無法找到正確的解決方案。這不是我主要的工作,而是我在工作中幫助的。錯誤代碼1004複製/粘貼VBA無法解決

基本上,我從一張已經過濾行到另一張紙並將其放置在A列的最後一行進行粘貼的紙張進行復制。

這工作完全找不到之前,我做了一些改變,現在它完全打破,任何幫助感激地讚賞,這裏是意大利麪條代碼破腫塊....

Sheets("Working Sheet").Select 
Selection.Copy 
Sheets("Sent Items").Select 

Dim LastRow As Long 
With ActiveSheet 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 
End With 

Range("A" & LastRow).Select 
ActiveSheet.Paste 
Application.CutCopyMode = False 
Columns("K:K").EntireColumn.AutoFit 
Sheets("Sent Items").Select 

它會導致錯誤1004說大小需要相同?粘貼導致錯誤。任何幫助都很好,一直在尋找答案。

+0

尺寸是相同的,通常是由於mergerd從電話原件(「複製」)部分 - 有沒有? – Jeremy

+0

副本上沒有合併的單元格,請在另一篇文章中閱讀,謝謝回覆,雖然 –

回答

1

由於您正在複製已過濾的行,所以使用SpecialCells方法總是一個很好的做法。

請參閱下面的重構代碼。此外,總是最好avoid using select和直接與對象工作。

Dim wsWorking as Worksheet 
Set wsWorking = Sheets("Working Sheet") 

With wsWorking 

    .Select 
    Selection.SpecialCells(xlCellTypeVisible).Copy 

End With 

Dim wsSent as Worksheet 
Set wsSent = Sheets("Sent Items") 

With wsSent 

    Dim LastRow As Long 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 

    .Range("A" & LastRow).PasteSpecial 

    .Columns("K:K").EntireColumn.AutoFit 

    .Range("A1").Select 'to make sure you end up on that sheet 

End With 
+0

這明確表明了這部分代碼,但仍然無法正常工作。現在它說>表格(「工作表」)。Selection.SpecialCells(xlCellTypeVisible).Copy對象不支持屬性或方法 –

+0

@DSilva - 立即嘗試。除非你絕對必須,否則我會建議反對「選擇」。徹底定義範圍更好。但是現在,如果您真的需要在宏的開始處使用選定的加註,那麼我現在的編輯應該可以幫助您。 –

+1

@ScottHoltzman,這個假設在運行''工作表'的宏表中是'_active_',這樣'rngSelection'實際上捕獲_that_非常多的單選單元。由於我們沒有關於如何識別這個「選擇」的線索,我認爲離開「工作表」(「工作表」)比較安全。在使用「選擇」對象之前選擇''。 – user3598756

1

可以按如下方式重構代碼:

Worksheets("Working Sheet").Select 
Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1) 

,或者,如果你有興趣只粘貼值:

Dim area As Range 

Worksheets("Working Sheet").Select 
For Each area In Selection.SpecialCells(xlCellTypeVisible).Areas 
    Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(area.Rows.Count, area.Columns.Count).Value = area.Value 
Next area