2015-10-19 217 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”或您有多少张纸张:) –

相关问题