本記事では「ワークシートの追加」と「追加したシートの操作(名前変更)」を解説していきます。
すぐに活用したい場合は下のコードをコピペして、5行目の”NewSheet”を自分好みに記述し直せばOKです。
1 2 3 4 5 6 7 |
Sub sample() Worksheets.Add after:=Worksheets(Worksheets.Count) '--- 末尾にシートを追加 Worksheets(Worksheets.Count).Name = "NewSheet" '--- 末尾のシートの名前を"NewSheet"に指定 End Sub |
では、さっそく基礎部分から解説していきます。
シートの追加
シンプルにただ新しいシートを追加したいのなら、下のように1行を記述すればOKです。
1 2 3 4 5 |
Sub sample1() Worksheets.Add '--- シートの追加 End Sub |
上のコードではアクティブシート(開いているシート)の左となりに新しいシートが追加されるようになっています。
※この「アクティブシートの左に」という部分を覚えておいてください。
シートの名前を付ける
次にシートの名前を変更するコードは下の通りです。
1 2 3 4 5 |
Sub sample2() Worksheets(1).Name = "NewSheet" '--- 1番目のシートの名前を"NewSheet"に指定 End Sub |
「Worksheets(1)」は左から1番目のシートを指していることになります。
新しく追加したシートの名前を指定する方法
ここでは、上の2つを組み合わせた「新しいシートの名前を指定する」方法を紹介します。
よくあるミス
ですが、上の『シートの追加』で書いた「アクティブシートの左となりに追加される」という特性が厄介で問題が生じることもあります。
例えば、下のコードを左端ではないシートを開きながら実行してみます。
1 2 3 4 5 6 7 |
Sub sample3() Worksheets.Add '--- シートの追加 Worksheets(1).Name = "NewSheet" '--- 1番目のシートの名前を"NewSheet"に指定 End Sub |
そうすると下のような結果になります。
当たり前ですがアクティブシート(Sheet3)の左となりに新しいシートが追加され、左端のシート(Sheet1)の名前が変わってしまっています。
このように本当は新しく追加したシートの名前を変えたいのに、プログラム実行時の開いているシートによって「追加される場所」が変わってしまうわけです。
そして、どこのシートを開いていても、新しいシートの名前を変えるには下のようになっています。
追加シートに的確に指定する方法
上の「シートを追加した場所が明確にならない」の対策について解説します。
ここでは下の2つのどちらかで対策すればOKです。
・新しいシートを追加する場所を固定する
・追加シートを変数に入れて操作する
では、さっそく書いていきます。
新しいシートを追加する場所を固定する
まずはよくシート追加の際に使われる方法である「追加場所を固定する」になります。
下は「シートを末尾(今あるシートの一番後ろ)に追加し、名前を変更する」というコードになります。
1 2 3 4 5 6 7 |
Sub sample4() Worksheets.Add after:=Worksheets(Worksheets.Count) '--- 末尾にシートを追加 Worksheets(Worksheets.Count).Name = "NewSheet" '--- 末尾のシートの名前を"NewSheet"に指定 End Sub |
上のコードであれば、どのシートを開いていても末尾にシートが追加されます。
ちなみに3行目の「Worksheets.Add after := Worksheets(Worksheets.Count)」の「after」は”〇〇番目のシートの後”ということになります。※「Before」なら”〇〇番目のシートの前”になる。
加えて、「Worksheets.Count」は現在のワークシートの数を返すプロパティとなっています。
なので、シート数が4つだった場合、3行目の処理内容は「4番目のシートの後にシートを追加する」となるわけです。
追加シートを変数に入れて操作する
次に場所を指定するのではなく「追加したシート自体を操作する」方法になります。
下は「追加したシート自体を指定して名前を付ける」コードになります。
1 2 3 4 5 6 7 8 |
Sub sample5() Dim newWorkSheet As Worksheet Set newWorkSheet = Worksheets.Add() newWorkSheet.Name = "newSheet2" End Sub |
上のコードでは新しく追加したシートはアクティブシートの左となりに追加されています。
上のコードでは「追加したシートを変数に入れ、操作(名前を付ける)する」という処理内容になっています。
5行目:Worksheet型の変数に追加したシートを入れています。※戻り値を取得したい場合は 「Worksheets.Add()」のように「()」を加える。
6行目:追加したシートを入れた変数を名前変更をしている。
スポンサーリンク
コメント