Excel 在激活图纸VBA之后从多个图纸复制特定列

Excel 在激活图纸VBA之后从多个图纸复制特定列,excel,vba,Excel,Vba,我正在尝试编写一个VBA代码,它选择我所在的活动工作表之后每个工作表的第一列(这将更改),并复制到新创建的工作表中,该工作表将显示在活动工作表之后 下面的代码不起作用,但希望它能让我了解我想要实现的目标 Dim sht As ActiveSheet Sheets(after.sht).Columns("1").copy 'I want to copy column one from every sheet after the current sheet I'm on Sheets.Add af

我正在尝试编写一个VBA代码,它选择我所在的活动工作表之后每个工作表的第一列(这将更改),并复制到新创建的工作表中,该工作表将显示在活动工作表之后

下面的代码不起作用,但希望它能让我了解我想要实现的目标

Dim sht As ActiveSheet

Sheets(after.sht).Columns("1").copy 'I want to copy column one from every sheet after the current sheet I'm on
Sheets.Add after:=sht.paste 'then paste into a new sheet which appears after the Active sheet I started on
选项显式
子复制列()
将源设置为工作表
将目标设置为工作表
持续时间一样长
Application.ScreenUpdating=False
'检查工作簿中是否已存在“主”工作表
用于此工作簿中的每个源。工作表
如果Source.Name=“Master”,则
MsgBox“主工作表已存在”
出口接头
如果结束
下一个
'在工作簿中插入新工作表
设置目的地=工作表。添加(之后:=工作表(“主”))
'重命名工作表
Destination.Name=“Master”
'在工作簿中的工作表中循环
用于此工作簿中的每个源。工作表
如果Source.Name“Master”和Source.Name“Main”,那么
'从目标工作表中查找最后一列
Last=Destination.Range(“A1”).SpecialCells(xlCellTypeLastCell).列
如果Last=1,则
'粘贴目标工作表中的数据
Source.UsedRange.Copy Destination.Columns(最后一个)
其他的
Source.UsedRange.Copy Destination.Columns(Last+1)
如果结束
如果结束
下一个
自动拟合
Application.ScreenUpdating=True
端接头
尝试一下:

Dim flagSh    As Worksheet
Dim newSh     As Worksheet
Dim i         As Long

With ThisWorkbook
  If ActiveSheet.Index = .Worksheets.Count Then Exit Sub
  Set flagSh = ActiveSheet
  .Worksheets.Add , flagSh
  Set newSh = ActiveSheet

  For i = .Worksheets.Count To newSh.Index + 1 Step -1
    .Worksheets(i).Columns(1).Copy
    newSh.Columns(1).Insert Shift:=xlToRight
  Next
  Application.CutCopyMode = False
End With
希望这能帮助你开始

Dim flagSh    As Worksheet
Dim newSh     As Worksheet
Dim i         As Long

With ThisWorkbook
  If ActiveSheet.Index = .Worksheets.Count Then Exit Sub
  Set flagSh = ActiveSheet
  .Worksheets.Add , flagSh
  Set newSh = ActiveSheet

  For i = .Worksheets.Count To newSh.Index + 1 Step -1
    .Worksheets(i).Columns(1).Copy
    newSh.Columns(1).Insert Shift:=xlToRight
  Next
  Application.CutCopyMode = False
End With