【问题标题】:Selecting different columns with VBA使用 VBA 选择不同的列
【发布时间】:2017-06-07 22:37:58
【问题描述】:

我有一个包含 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

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    【讨论】:

    • 谢谢,RADO。由于某种原因,它不想在名称中使用“ThisWorkbook”前缀运行。我删除了前缀的那部分,但它仍然不想在列上重复。但是,我用“Application.Union”替换了“Range”选择,它起作用了!
    【解决方案2】:

    下面的代码成功了:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多