シートの複製!
手でやっていませんか!?
まあ1つ2つ程度ならいいんですけど
例えば!
勤務表なんかで
毎月新しいシートを社員分作ったり…
そう!毎日!毎週!毎月!
定期的に決まったものを
毎回複製するのはめんどくさい!
まずはこの記事で
シートを1つ複製するVBAを覚えちゃおう!
VBAを覚えていくシリーズ第4弾!
目次
シートを複製してみよう!
シート情報を変数にセット
まずは複製させたいシートを
変数にセットしましょう!
例えばこの「テンプレート」シートを
複製させたいとき!

1 2 3 4 5 6 7 8 9 |
Option Explicit Sub copySheet() '変数 Dim wsTemplate As Worksheet '変数にテンプレートシート情報をセット Set wsTemplate = ThisWorkbook.Worksheets("テンプレート") End Sub |
Sub や 変数 などについては
他記事やYouTubeで解説してるのでそちらを参考に!
このThisWorkbookに注目!
こいつはBookを操作する機能をたくさん持ってます!
「.」を続けて打つと機能一覧が出てきます!
「.」の後に出てくるWorksheetsで
シートを指定して、そのシート情報を呼び出します!
→このBookファイルの . シートの中で(“テンプレート”)て名前のやつ
シートの指定方法は3つあるので
知りたい方は下記の記事を参考ください。

シートをコピーする!
では「テンプレート」シートを
シートの一番後ろに複製してみよう!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Option Explicit Sub copySheet() '変数 Dim wsTemplate As Worksheet Dim intLastSheet As Integer '変数にテンプレートシート情報をセット Set wsTemplate = ThisWorkbook.Worksheets("テンプレート") '変数にシート数をセット intLastSheet = ThisWorkbook.Worksheets.Count 'テンプレートシートを一番後ろにコピー wsTemplate.Copy After:=ThisWorkbook.Worksheets(intLastSheet) End Sub |
■変数にシート数をセット
まずシート数を数える!これ後で必要になります!
今回は「2」となりますね!
これが現時点で一番後ろのシート数になりますね!
→このBookファイルの . シートの . 数
そしてこの現時点で「2」という値を
intLastSheetという変数にセットしてます。
■テンプレートシートを一番後ろにコピー
→テンプレートシートを . コピーする 後ろに:=このBookの . シート(2番目の)
なんか英語みたい(笑)
この1文が実行されることで
3シート目に複製したシートができましたね!

シート名を書き換える!
あとは複製されたシートの名前を
「カボチャ」に書き換えてみよう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Option Explicit Sub copySheet() '変数 Dim wsTemplate As Worksheet Dim intLastSheet As Integer '変数にテンプレートシート情報をセット Set wsTemplate = ThisWorkbook.Worksheets("テンプレート") '変数にシート数をセット intLastSheet = ThisWorkbook.Worksheets.Count 'テンプレートシートを一番後ろにコピー wsTemplate.Copy After:=ThisWorkbook.Worksheets(intLastSheet) '複製されたシートの名前を変更 ThisWorkbook.Worksheets(intLastSheet + 1).Name = "カボチャ" End Sub |
ポイントは「intLastSheet + 1」ですね!
こうする事で
複製してできたシートの位置と
必ず一致しますね!
複製前にどれだけシートがあっても
intLastSheetには複製前のシート数(最後の数)
がセットされます!
その後ろにシートが複製されるため
複製されたシートは
必ず「intLastSheet + 1」番目にいるのです!
→このBookの . シート(2+1番目)の . 名前

これでカボチャと書き換わりましたね!
VbaForYoutube
YouTube動画で最後書き終わったVBAになります!
1つ以上のシートを複製するマクロを作る動画なので
気になる方は是非見て下さい!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Option Explicit Sub main() Dim wsList As Worksheet '①「リスト」シートってどれ? Dim intListCount As Integer '②シート名の「数」は? Dim intLastSheet As Integer '③シートの一番後ろって何番目? Dim wsTemplate As Worksheet '④「テンプレート」シートってどれ? Dim strSheetName As String '⑤「シート名」ってどれ? '③シートの一番後ろって何番目? intLastSheet = ThisWorkbook.Worksheets.Count '①「リスト」シートってどれ? Set wsList = ThisWorkbook.Worksheets("リスト") '④「テンプレート」シートってどれ? Set wsTemplate = ThisWorkbook.Worksheets("テンプレート") '②シート名の「数」は? intListCount = wsList.Range("A1").End(xlDown).Row - 1 '1.「テンプレート」シートを複製する '1-1.「リスト」シート内の「シート名」の数を数える '1-2.シート1番後ろを指定する '1-3.「テンプレート」シートを複製する '2.複製したシート名を変更する '2-1.「リスト」シート内の「シート名」の値を取ってくる '⑤「シート名」ってどれ? '2-2.1-3で複製したシート名を2-1に書き変える '3.「リスト」シートのA1セルにカーソルを置く End Sub |