Excelでひな形として使用しているシートなど、特定のシートを指定した回数だけコピーして一番最後のシートの右側に追加するマクロを作る機会がありましたので、備忘記録代わりに記事にしておきます。
結論、copy after:=を使うと実現できます。
特定のひな形シートを指定した回数だけコピーして一番最後のシートの右側に追加するマクロ
今回はやりたいことはこんな感じで、Excelのシートに作ってあるひな形を、
指定した回数コピーして一番右側に追加するといったマクロになります↓
(シートが3つに増えていることを確認してください)
で、この動作をするマクロがこちらになります↓
Sub sheet_add()
'■特定のシートを指定した回数コピーして一番最後の
'■シートの右側に追加するマクロ(2枚追加)
Dim i As Long
For i = 1 To 2
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Next i
End Sub
上のマクロではひな形シートを2枚追加(2回コピー)するようになっていますので、このマクロを一部書き換えて自分が指定した任意の回数だけ追加・コピーするようにしたいと思います。
いくつかやり方がありますが、一つのやり方としてコードを直接書き換える方法があります。
具体的には上のマクロの8行目のハイライト行の部分を直接書き換えると追加する枚数を増減することができます。
実際にコードを書き換えたマクロがこちらになります。このマクロを実行するとひな形シートを5枚追加します↓
Sub sheet_add()
'■特定のシートを指定した回数コピーして一番最後の
'■シートの右側に追加するマクロ(5枚追加)
Dim i As Long
For i = 1 To 5
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Next i
End Sub
実行後の画像がこちら↓
(シートが6つに増えていることを確認してください)
特定のひな形シートを指定した回数だけコピーして一番最後のシートの右側に追加するマクロ(セルに追加枚数を入力)
自分一人でこのマクロを使う場合にはここまでのやり方で問題ないと思いますが、マクロに馴染みが無い人にはさきほどのマクロのコードを書き換える作業はハードルが高く感じるものです。
そういった場合には、追加したい枚数をセルに入力させるようにすると少しは使いやすくなると思います。
具体的にはこんな感じで入力箇所を作ってあげます↓
入力箇所を追加したら、後はコードを書き換えます。
Sub sheet_add()
'■特定のシートを指定した回数コピーして一番最後の
'■シートの右側に追加するマクロ(H6セルに記載された枚数を追加する)
Dim i As Long
For i = 1 To Range("h6").Value
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Next i
End Sub
マクロ実行後の動画を載せておきます↓
おまけ。エラーにさせないためにセルに入力規則を設定しておく
セルに入力された枚数だけひな形シートをコピーして追加するマクロですが、セルにこちらが意図していないデータが入力されるとマクロの実行時にエラーが発生してしまいます。
たとえば先ほどの例ではH6セルに数字以外が入力された状態でマクロを実行するとエラーになります↓
試しにH6セルに「unko」と入力して実行ボタンを押すと。
こういったエラーが表示されます。
H6セルには数値だけ入力してほしい場合にはExcelのデータの入力規則機能を使って入力を制限してあげると効果的です。
入力規則の設定画面で
設定タブの「入力値の種類(A)」という箇所で「整数」を選択してあげるとよいかと思います。
設定が上手くいくと、H6セルには整数以外のデータが入力された際にはエラーが表示されるようになるはずです。
試しに整数以外のデータを入力してみます。
エンターキーを押してデータを確定すると、
このようなエラーが表示されます。
こういった機能を使ってマクロが実行された際にエラーにならないように仕組みを作ってあげると良いかと思います。
まとめ
特定のシートを指定した回数だけコピーして一番最後のシートの右側に追加するマクロを記事にしました。
追加したシートの名前も同時に変更するなどするとより使い勝手がよくなるかと思います。
【本日の近況報告】
所要のついでに長崎市内を少しだけ観光。
坂本龍馬が作った商社「亀山社中」を人生で初めて訪問。
道中の坂道&階段がなかなかハードで、あらためて長崎市は「坂の街」ということ体感しました。
【本日の1曲】
ROSSO/星のメロディー
スラムダンクの映画の主題歌にthe birthdayが決まったというニュースが流れてきました。
その流れで(別のバンドですが、ボーカルが一緒なので)思い出したのがROSSOでして、ROSSOで上位に好きな曲がこちら。
これから寒くなりますが、そんな季節にぴったりの1曲。