Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAでシートをコピーする-Worksheet.Copy

VBAでシートをコピーする-Worksheet.Copy

対象:Excel2003, Excel2007, Excel2010, Excel2013

「エクセル2010 vba シート コピー」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

ExcelでシートをコピーするVBA(Visual Basic for Applications)のコードを探している方による検索です。

上記の検索だけでは詳細がわかりませんので、簡単なサンプルマクロをご紹介します。

[スポンサードリンク]

アクティブシートを最後尾に複製するサンプルマクロ

アクティブなシートを最後尾に複製(コピー)するなら以下のようなマクロです。

Sub アクティブシートを最後尾にコピーする()
 ActiveSheet.Copy After:=Sheets(Sheets.Count)
End Sub

WorksheetオブジェクトやChartオブジェクトのCopyメソッドで、ワークシートやグラフシートのコピーができます。

アクティブなシートを先頭・一番左にコピーするのなら

ActiveSheet.Copy Before:=Sheets(1)

です。

WorksheetオブジェクトやChartオブジェクトのCopyメソッドの引数は、指定されたシートの前にコピーするBeforeか、指定されたシートの後ろにコピーするAfterのいずれかが指定できます。

名前付き引数を使いましょう

Beforeが第1引数ですから、

ActiveSheet.Copy Sheets(1)

というコードでも一番左にコピーができ、
Afterが第2引数ですから、

ActiveSheet.Copy , Sheets(Sheets.Count)

というコードでも一番右にコピーができます。

しかし、こういうわかりづらい引数は、名前付き引数を使って書いておくべきです。

特に、

ActiveSheet.Copy , Sheets(Sheets.Count)

は「Copy」の後ろにある第1引数と第2引数の区切りの「,」(カンマ)を、うっかり見落としてしまえば、一番右のシートの(後ろ・右側ではなく)前・左側にコピーする、という意味に読めてしまいます。

名前付き引数を使って

ActiveSheet.Copy After:=Sheets(Sheets.Count)

と書いておけば、そんな誤読の可能性を減らせます。

最終更新日時:2023-06-19 17:38

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAでシートをコピーする-Worksheet.Copy

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.