2017-06-28 64 views
1

我想讓我的代碼找到工作表中的最後一行,然後複製整行並將其粘貼到下面。目前,我有:選擇整個最後一行

Cells(Application.Rows.Count, 1).End(xlUp).Select 
Selection.Copy 
Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).Select 
Selection.Insert Shift:=xlDown 
Application.CutCopyMode = False 

這是在發現該行的最後一個單元格很大,但是當它拷貝/粘貼此,它只是抓住這第一個單元格。所以我想知道的是,如果您可以使用此代碼來查找最後一行,然後選擇整個行,然後複製/粘貼它下面。請記住,我不能只輸入

Rows("3:3").Select 
Selection.Copy 
Rows("4:4").Select 
Selection.Insert Shift:=xlDown 

因爲該行是可變的。謝謝!

Dim lastRow As Long 

lastRow = Cells(Application.Rows.Count, 1).End(xlUp).Row 

Rows(lastRow).Select 
Selection.Copy 
Rows(lastRow).Offset(1, 0).Select 
Selection.Insert Shift:=xlDown 
Application.CutCopyMode = False 

上面的代碼會找到最後一行,選中它,複製它並粘貼到下面。不過,我需要到最後一行復制並粘貼在它下面的幾排在某些情況下,這樣:

Rows("3:3").Select 
Selection.Copy 
Rows("4:16").Select 
Selection.Insert Shift:=xlDown 

大意的東西,但我不能給選定的行粘貼幾行,因爲

Rows(lastRow:4).Select 

嚇壞了。有沒有辦法將「16」添加到最後一行,以便複製該行並將其粘貼到接下來的14行等中?

+3

'細胞(Application.Rows.Count,1).END(xlUp).EntireRow.Select'應該開始你。也不需要選擇東西 – MacroMarc

+1

要擴展@ MacroMarc的最後一句,它的**高度建議[避免使用'.Select' /'.Activate'](https://stackoverflow.com/questions/10714251/) 。 – BruceWayne

+0

fwiw,如果您確實從底部向上查找最後一次使用的行,則不必在插入值爲接下來的13行空白行之前插入13個新行。 – Jeeped

回答

3

您可以使用.Resize'Fill Down'選擇多個行。

dim rws as long 
rws = 14 'total # of rows 3:16 
with worksheets("sheet1") 
    .cells(.rows.count, "A").end(xlup).resize(rws, .columns.count).filldown 
end with 
+0

尼斯Jeeped :)。 –

+0

所有的金星人,非常感謝! – ladymrt

1

您必須重新調整它

Sub temp() 
    Dim lr As Long 
    lr = Range("A" & Rows.Count).End(xlUp).Row 
    Rows(lr).Copy 
    Range("A" & lr).Resize(14, Columns.Count).PasteSpecial xlPasteAll 
End Sub 

不要選擇的東西,這是非常不好的做法。