2015-10-19 271 views
0
  • 我有4張格式相同(不同數據的列相同數量)的表。
  • 在每張紙上,我想複製6個最後一個非空白列並將它們粘貼到接下來的6個空白列中。
  • 應該在所有4張紙上一次完成(即不在紙張後面運行宏張)。

我發現了多個部分的答案,但我努力把它們放在一起(我對VBA沒有任何認識)。vba - 複製粘貼最後一個非空白列在下一個空白列 - 在多個相同格式表

謝謝很多

+1

那你試試? – prasun

+0

我試過這個 - 但是這隻適用於當前工作表上,而且我想讓它在所有工作表之後工作(即選定的工作表)如果我添加一個工作表或者我更改了現有片材的名稱,我想宏循環通過新的/重命名片以及... 子copyRange是() 昏暗LASTROW只要 昏暗LASTCOL只要 LASTCOL =單元格(2,Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count,「A」)。行 範圍(單元格(1,LastCol),單元格(LastRow,LastCol))。 Selection.Copy 細胞(1,LASTCOL + 1)。選擇 ActiveSheet.Paste 結束子 –

回答

0

這段代碼複製最後一個不空行(6列),並將其粘貼到一個空行(6列)。但是,如果您的工作表名稱最終具有編號1至4,則此代碼纔有效。 (記住要改變SHEETNAME中的代碼,如果你的工作表名稱不是「工作表Sheet1」,「Sheet2中」,「表Sheet 3」和「sheet4」)希望它可以幫助你或其他(:

Sub A() 
Dim count As Integer 
Dim sheetname As String 

sheetname = sheet 

For x = 1 To 4 

sheetname = "sheet" & x 

Worksheets(sheetname).Activate 

count = 1 

Do Until ThisWorkbook.Sheets(sheetname).Cells(count, 1).Value = "" 

    count = count + 1 

Loop 


ThisWorkbook.Sheets(sheetname).Cells(count - 1, 1).Select 


ActiveCell.Resize(, 6).Copy 

ActiveCell.Offset(1, 0).PasteSpecial xlPasteValues 

Next x 

End Sub 
+0

....剛纔看到它說6不可─空 「列」,而不是 「行」 ... –

+0

謝謝M. Kjaer。它說有一個應用程序定義的錯誤或對象定義的錯誤。 當我調試時,以下突出顯示「ThisWorkbook.Sheets(sheetname).Cells(count - 1,1)。Select」 道歉,如果這是一個愚蠢的問題。我試過其他的選擇,但看不出有什麼不對... –

+0

嗯。這很奇怪......它適用於我。您確定您已更改牀單名稱或更改了代碼,以便匹配嗎?您還必須有4張紙或更正代碼部分「對於x = 1到4」到「對於x = 1到3」或您有多少張紙張:) –

相關問題