本記事では「ワークシートの追加」と「追加したシートの操作(名前変更)」を解説していきます。
すぐに活用したい場合は下のコードをコピペして、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行目:追加したシートを入れた変数を名前変更をしている。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク