【Excel VBA】シートのコピー(Copyメソッド)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「シートをコピーする方法」について解説していきます。
はじめに

今回は、シートをコピーする方法について解説します。
コピーにおける注意点も解説しますので、ぜひ最後までご覧ください。

この記事を読むメリット
  • シートのコピー方法が分かります。
  • 引数の解説や注意点などの詳細を解説します。

使用例

サンプルコードを交えて解説いたします。

サンプルコード

サンプルコード
Public Sub sampleWorksheetCopy()

    ' [Sample1]シートをブックの先頭にコピー
    ThisWorkbook.Worksheets("Sample1").Copy Before:=ThisWorkbook.Worksheets(1)

    ' [Sample2]シートをブックの末尾にコピー
    ThisWorkbook.Worksheets("Sample2").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub

実行結果

実行前

Sample1シート

Sample2シート

実行後

Sample1シート

Sample2シート

詳細解説

構文や注意点などについて踏み込んで解説します。

構文

構文

object.Copy(Before/After)

りゅう
BeforeかAfterのどちらかを指定してください。

引数

# 引数 必須 詳細
1 Before ワークシートを指定します。
コピー先が、指定したワークシートの直前(左側)にコピーされます。
2 After ワークシートを指定します。
コピー先が、指定したワークシートの直後(右側)にコピーされます。

引数を省略した場合は新規ブックにコピーされます。
コピーされたシートがアクティブシートとなります。

サンプルコード(応用編)

本項では、汎用的なサンプルコードを掲載していきます。

共通メソッド化(ブックの末尾にコピー)

サンプルコード
Public Function copyWorksheet(ByVal srcWs As Worksheet) As Worksheet

    ' 引数のシートをブックの末尾にコピー
    srcWs.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

    ' コピー元シートをアクティブシートに変更
    srcWs.Activate

    ' コピー先シートを返却
    Set copyWorksheet = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

End Function
りゅう
引数にコピー元のシートを指定し、そのシートをコピーし呼び出し元へ返却します。
また、コピー元のシートをアクティブシートに戻します。

さいごに

いかがでしたでしょうか。
用途もよりますが、引数指定やアクティブシートに気を付けながらコーディングしましょう!

この記事が、読者さまのお力になれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA