スライドショースライドショー

【ExcelVBA入門】列をコピーするためのCopyメソッドの使い方とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで列のコピーをする方法を知っていますか?

データの追加をする際に、列のコピーをするケースはよくありますよね。

そこで今回は、

・列をコピーする方法

・複数列を指定して列をコピーする方法

といった基礎的なことから、

・セル範囲を指定して列をコピーする方法

・別のブックから列をコピーする方法

・合わせて覚えると便利な列の挿入・削除方法

といった応用的な方法まで、徹底的に解説します!

列をコピーするためのCopyメソッドの使い方とは

はじめに、列をコピーする方法について簡単に解説します。

VBAで列をコピーする場合は、Copyメソッドを使って以下のように書きます。

使い方:

Columns(コピー元の列番号).Copy Destination:=Columns(コピー先の列番号)

また、コピーするとExcel上で次のようにコピーした状態が残ってしまいます。

D列をコピーした後、点線でコピー状態が残っているサンプルです。

そのため、コピー状態を解除するコードを合わせて覚えておくのがおすすめです!

コピー解除コード:

Application.CutCopyMode = False

サンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します。

列を指定して1列コピー

はじめに、1列コピーする方法について解説します。

実行前:

サンプルコード1:

Sub Test1()
  Columns(2).Copy Destination:=Columns(9)
End Sub

実行後:

2列目のデータをコピーして9列目にペーストするサンプルです。

このように、簡単に列をコピーすることができます。

セル範囲を指定してコピー

次に、セル範囲を指定して列をコピーする方法について解説します。

実行前:

サンプルコード:

Sub Test2()
  Range("A2:A11").Copy Destination:=Range("I2:I11")
End Sub

実行後:

サンプルでは、「A2:A11」の範囲のデータをコピーし、「I2:I11」の範囲に貼り付けています。

セル範囲を変更すれば、指定範囲でコピー・ペーストすることができます。

列全体ではなく範囲を指定してコピーする場合は、この方法を使えばOKですね。

複数列コピー

次に、複数列を一括でコピーする方法について解説します。

実行前:

サンプルコード:

Sub Test3()
  Range("B:D").Copy Destination:=Columns(9)
End Sub

実行後:

サンプルでは、B列~D列目のデータをコピーし、I列からデータを貼り付けています。

Range("2:4")」の列番号の範囲を変更すればコピーする範囲を変更でき、「Columns(9)」の列番号を変更すれば貼り付け先の位置を変更することができます。

複数列をコピーする場合は、この方法を使えばOKですね。

変数を使ったコピー

次に、変数を使った列のコピー方法について解説します。

実行前:

サンプルコード:

Sub Test4()
  Dim copyCol As Integer
  Dim pasteCol As Integer
  copyCol = 2
  pasteCol = 9
  
  Columns(copyRow).Copy Destination:=Columns(pasteRow)
End Sub

実列結果:

変数を使うと、列数を変えるときに変数の値を変えるだけで済むため、使い勝手がよくなるのでおすすめです!

選択している列のすぐ右にコピー

次に、選択している列のすぐ右に列をコピーする方法について解説します。

実行前:

サンプルコード:

Sub Test5()
  Columns(ActiveCell.Column).Copy Destination:=Columns(ActiveCell.Column + 1)
End Sub

実行後:

選択している列は「ActiveCell.Column」で取得することができるので、「ActiveCell.Column + 1」で選択している列の下の列にコピーしています。

別ブックからコピー

次に、別のブックから列をコピーする方法について解説します。

別のブックからコピーする場合は、事前に別のブックを開いてからワークブックを指定してコピーします。

コピー元のデータ(Test.xlsx):

コピー前:

サンプルコード:

Sub Test6()
  Dim wb1 As Workbook
    
  'ブックを開く
  Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"
  Set wb1 = ActiveWorkbook
  
  'Test.xlsxのB列をマクロ実行ファイルにコピー
  wb1.Worksheets("Sheet1").Columns(2).Copy Destination:=ThisWorkbook.Worksheets("Sheet1").Columns(9)
 
  'ブックを閉じる
  Application.DisplayAlerts = False
  wb1.Close
  Application.DisplayAlerts = True
  
End Sub

コピー後:

Workbooks.Open ファイルパス」でファイルを開き、コピー元のブックはActiveWorkBook、マクロ実行ファイルはThisWorkBookで指定して列をコピーしています。

ワークブックの操作については以下でも詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】ワークブック操作する方法について徹底解説!
更新日 : 2019年8月28日

行をコピーする方法とは

ここまで列をコピーする方法を解説してきましたが、同じような方法でも簡単にコピーすることができます。

実行前:

サンプルコード:

Sub Tes7()
  Rows(11).Copy Destination:=Rows(12)
End Sub

実行後:

行番号を指定する場合はColumnsの部分をRowsに変更するだけですむため、とても簡単ですよね。

このように、行も簡単にコピーすることができます。

行のコピーについては以下でも詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】行をコピーするためのCopyメソッドの使い方とは
更新日 : 2019年4月2日

形式を選択して貼り付けるためのPasteSpecialメソッドの使い方とは

ここまでそのままコピーする方法のみ紹介してきましたが、形式を選択して貼り付けたい場合もありますよね。

形式を選択して貼り付ける場合は、PasteSpecialメソッドを使います。

実行前:

サンプルコード:

Sub Test8()
  Columns(1).Copy
  Columns(9).PasteSpecial Paste:=xlPasteFormats
  
  'コピーモードを解除
  Application.CutCopyMode = False
End Sub

実行後:

PasteSpecialメソッドの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】PasteSpecialメソッドで形式を選択して貼り付ける方法
更新日 : 2019年8月28日

補足:合わせて覚えると便利な列挿入・削除方法

最後に、列のコピーとあわせて覚えておくと便利な列の挿入・削除方法について解説します。

列を挿入する場合は、Insertメソッドを使って次のように書きます。

実行前:

列挿入サンプルコード:

Sub Test9()
  Columns(2).Insert
End Sub

実行後:

列を削除する場合は、Deleteメソッドを使って次のように書きます。

実行前:

列削除サンプルコード:

Sub Test10()
  Columns(2).Delete
End Sub

実行後:

挿入、削除どちらも簡単にできるので合わせて覚えておくのがおすすめです!

以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!

【ExcelVBA入門】列を挿入するためのInsertメソッドの使い方とは
更新日 : 2018年9月5日
【VBA入門】行・列の削除とクリアをする方法
更新日 : 2019年4月25日

まとめ

今回は、VBAで列を挿入する方法について徹底的に解説しました。

Excelで列の操作をするケースは多いので、列のコピー挿入削除は合わせて覚えておくのがおすすめです!

どれも使い方は簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説