2017-06-22 319 views
0

我試圖將多個工作表中的數據合併爲一個,使用描述的方法hereExcel VBA複製/粘貼錯誤

的差異我只想從複製因此每個文件數據的單一專欄中,我已經修改了我的代碼這樣的:

With wsMaster 
    erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B 
    '~~> Copy from the file you opened 
    wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2 
    'to however long the data runs for 
    '~~> Paste on your master sheet below last used row in column B 
    .Range("B" & erow).Offset(1, 0).PasteSpecial xlPasteValues 
End With 

這適用於第一次迭代(它複製的第一個源文件正確),但當它到達第二個源文件時,它會拋出一個錯誤「運行時錯誤'1004':PasteSpecial方法或Range類失敗」。

當處於調試模式時,我嘗試手動點擊並Ctrl + V複製的數據,它表示範圍的大小/形狀不匹配。但是,如果我點擊第2行或以上的任何單元格,它會粘貼在宏中複製的數據,而不會抱怨。

任何想法?

回答

0

wsTemp.Range("A2:A" & .Rows.Count).Copy

此行引起問題,請chenge這

wsTemp.Range("A2:A" & Range("A2").SpecialCells(xlCellTypeLastCell).Row).Copy

+0

這個工作。謝謝! –

1

當你嵌套在With wsMaster裏面就意味着你加入With語句中的前綴.所有對象,是與此對象相關(wsMaster工作表)。

所以,你在哪裏試圖尋找最後一排的第一個地方是正確

erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B 

但第二個地方,在那裏你正試圖從一個不同的表複印件(wsTemp工作表),是不是正確。下面的行:

wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2 

就是說.Rows.CountwsMaster片(而不是wsTemp)尋找行的計數。

所以您需要更改該行:我更喜歡以下語法所有佔用的單元格複製列「A」

wsTemp.Range("A2:A" & wsTemp.Rows.Count).Copy 

wsTemp.Range("A2:A" & wsTemp.Cells(wsTemp.Rows.Count, "A").End(xlUp).Row).Copy 
+0

謝謝謝。 'wsTemp.Range(「A2:A」&wsTemp.Rows.Count).Copy'不起作用。 但是'wsTemp.Range(「A2:A」&wsTemp.Cells(wsTemp.Rows.Count,「A」).End(xlUp).Row).Copy'確實。 我把克里斯的回答標記爲答案,因爲他早一點。 –

+0

@EP沒關係,就你所知,使用xlCellTypeLastCell.Row可能不是獲得最後一行的最可靠的方法 –