2017-03-22 146 views
0

我有一個包含10個工作表的Excel工作簿。 我想有一個宏能夠將「Sheet3」,「Sheet4」,「Sheet5」,「Sheet6」和「Sheet7」的所有內容複製到當前爲空的「Sheet10」中,一個接一個地。將選定工作表的內容複製並粘貼到新工作表中

「Sheet3」,「Sheet4」,「Sheet5」,「Sheet6」和「Sheet7」的內容並不總是相同的,所以我希望這個宏可以複製所有的內容,而不僅僅是一個固定的範圍。

+1

使用excel內置錄製功能來記錄您的操作並根據您的要求修改代碼,併發布代碼以確切的問題阻止您繼續前進。 – Barney

+0

我無法錄製它,因爲Consolidate函數不允許我簡單地將表單複製並粘貼到另一個空的表單中。 – Anne

+0

列數保持不變嗎? –

回答

0

Excel有許多SpecialCells方法,其中一個方法可以找到工作表中最後使用的單元格。出於某種原因,宏將記錄爲.SpecialCells(xlLastCell),而Excel幫助/引用聲明它是.SpecialCells(xlCellTypeLastCell),您也可以使用值11. 下面的所有三個宏都將從當前單元格到表單中的最後一個單元格。

Sub Macro1() 
' Macro1 Macro 
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
End Sub 

Sub Macro2() 
' Macro1 Macro 
    Range(Selection, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select 
End Sub 

Sub Macro3() 
' Macro1 Macro 
    Range(Selection, ActiveCell.SpecialCells(11)).Select 
End Sub 

這是一個非常基本的例子,它將複製sheet1和sheet2中的數據並將其附加到sheet3中。

Sub Macro4() 
Sheets("Sheet1").Select 
Range("A1").Select 
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
'Application.CutCopyMode = False 
Selection.Copy 

Sheets("Sheet3").Select 
ActiveCell.SpecialCells(xlLastCell).Select 
Selection.Offset(1, 0).Select 
Selection.End(xlToLeft).Select 
ActiveSheet.Paste 

Sheets("Sheet2").Select 
Range("A1").Select 
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
'Application.CutCopyMode = False 
Selection.Copy 

Sheets("Sheet3").Select 
ActiveCell.SpecialCells(xlLastCell).Select 
Selection.Offset(1, 0).Select 
Selection.End(xlToLeft).Select 
ActiveSheet.Paste 
End Sub 
+0

好吧,但我不明白。我是否必須複製並粘貼此代碼,而不是每個表單的當前選擇? – Anne

+0

如果A1是活動單元格,則範圍(Selection,ActiveCell.SpecialCells(xlLastCell))。選擇 End Sub將選擇工作表中的所有內容。然後將其複製並粘貼到第10張工作表中。 – Kev

+0

此外,當您將第二張和隨後的工作表粘貼到彙總表中時,您需要先選擇該工作表中的最後一個單元格,然後向下移動,以便您的新數據不會覆蓋先前的內容。 – Kev

相關問題