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


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

対象:Excel2003, Excel2007, Excel2010, Excel2013

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

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

上記の検索だけでは詳細がわかりませんので、簡単なサンプルをご紹介しておきましょう。

[スポンサードリンク]

アクティブなシートをコピーするなら以下のようなコードです。


▼アクティブなシートを最後尾・一番右にコピーするVBAのコード
 ActiveSheet.Copy After:=Sheets(Sheets.Count)

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)
と書いておけば、そんな誤読をする可能性はかなり減らせます。

Worksheetオブジェクト・ChartオブジェクトのCopyメソッドとともに、あまり使っていなかったという方は、名前付き引数の効果についても是非ご確認ください。

[スポンサードリンク]

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

TrackBack:1

TrackBack URL
シートのコピーをイミディエイトウィンドウから from インストラクターのネタ帳
ノートパソコンを使っているときに面倒なシートのコピーを、イミディエイトウィンドウから行う方法をご紹介しています。

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

「Sheets・Worksheet」の記事一覧

検索


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

.