使用VBA选择不同的列

时间:2017-06-07 22:37:59

标签: excel-vba vba excel

我有一个包含22列数据的工作表,我需要将从第3列开始的第一列和各列复制并粘贴到同一工作簿中的新工作表中。例如,我将选择A列和C列,并将这两列复制到新工作表中。然后,我将返回到初始工作表并选择A列和D列,并将这两列复制到新工作表等。

下面的代码遍历所有列,但它总是选择连续范围,而不仅仅是列A和系列中的下一列。我的初始代码如下:

Sub CashFlowColumnTabSplit()

ActiveSheet.Name = "Main"

For i = 3 To 22
    Range(Columns(1), Columns(i)).Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("A1").Select
    ActiveSheet.Paste
    Sheets("Main").Select
Next i

End Sub

2 个答案:

答案 0 :(得分:1)

尝试:

Sub CashFlowColumnTabSplit()
Dim Source_Sheet As Worksheet
Dim Target_Sheet As Worksheet
Dim i As Long

    Set Source_Sheet = ThisWorkbook.Sheets("Main")

    For i = 3 To 22
        Set Target_Sheet = ThisWorkbook.Sheets.Add(After:=Source_Sheet)
        Application.Union(Source_Sheet.Columns(1), Source_Sheet.Columns(i)).Copy
        Target_Sheet.Range("A1").PasteSpecial xlPasteAll
    Next i

End Sub

答案 1 :(得分:0)

下面的代码可以解决问题:

Sub CashFlowColumnTabSplit2()

ActiveSheet.Name = "Main"

For i = 3 To 22
    Application.Union(Columns(1), Columns(i)).Copy
    Sheets.Add After:=ActiveSheet
    Range("A1").Select
    ActiveSheet.Paste
    Sheets("Main").Select
Next i

End Sub