「エクセル2010 vba シート コピー」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ExcelでシートをコピーするVBA(Visual Basic for Applications)のコードを探している方による検索です。
上記の検索だけでは詳細がわかりませんので、簡単なサンプルマクロをご紹介します。
アクティブシートを最後尾に複製するサンプルマクロ
アクティブなシートを最後尾に複製(コピー)するなら以下のようなマクロです。
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