2017-06-07 5 views
0

私は22列のデータを持つワークシートを持っており、最初の列と3列目の各列をコピーして同じワークブックの新しいワークシートに貼り付ける必要があります。たとえば、列Aと列Cを選択し、それら2つの列を新しいワークシートにコピーします。その後、最初のワークシートに戻り、列Aと列Dを選択して、これら2つの列だけを新しいワークシートなどにコピーします。VBAで異なる列を選択する

以下のコードはすべての列を繰り返しますが、列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 

答えて

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 
+0

おかげで、RADO。それは何らかの理由で名前に "ThisWorkbook"という接頭辞を付けて実行したくなかった。私はプレフィックスのその部分を削除しましたが、それでも列を繰り返してはいけませんでした。しかし、私は "Application.Union"で "Range"選択に置き換えられました。 – user1975091

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 
関連する問題