【VBA】ワークシートの追加・名前変更の仕方【add・Nameメソッド】

VBA

本記事では「ワークシートの追加」と「追加したシートの操作(名前変更)」を解説していきます。

すぐに活用したい場合は下のコードをコピペして、5行目の”NewSheet”を自分好みに記述し直せばOKです。

 

では、さっそく基礎部分から解説していきます。

スポンサーリンク



シートの追加

シンプルにただ新しいシートを追加したいのなら、下のように1行を記述すればOKです。

上のコードではアクティブシート(開いているシート)の左となりに新しいシートが追加されるようになっています。

※この「アクティブシートの左に」という部分を覚えておいてください。

シートの名前を付ける

次にシートの名前を変更するコードは下の通りです。

「Worksheets(1)」は左から1番目のシートを指していることになります。

新しく追加したシートの名前を指定する方法

ここでは、上の2つを組み合わせた「新しいシートの名前を指定する」方法を紹介します。

よくあるミス

ですが、上の『シートの追加』で書いた「アクティブシートの左となりに追加される」という特性が厄介で問題が生じることもあります。

例えば、下のコードを左端ではないシートを開きながら実行してみます。

 

そうすると下のような結果になります。

当たり前ですがアクティブシート(Sheet3)の左となりに新しいシートが追加され、左端のシート(Sheet1)の名前が変わってしまっています。

このように本当は新しく追加したシートの名前を変えたいのに、プログラム実行時の開いているシートによって「追加される場所」が変わってしまうわけです。

そして、どこのシートを開いていても、新しいシートの名前を変えるには下のようになっています。

 

追加シートに的確に指定する方法

上の「シートを追加した場所が明確にならない」の対策について解説します。

ここでは下の2つのどちらかで対策すればOKです。

・新しいシートを追加する場所を固定する

・追加シートを変数に入れて操作する

 

では、さっそく書いていきます。

新しいシートを追加する場所を固定する

まずはよくシート追加の際に使われる方法である「追加場所を固定する」になります。

下は「シートを末尾(今あるシートの一番後ろ)に追加し、名前を変更する」というコードになります。

上のコードであれば、どのシートを開いていても末尾にシートが追加されます。

 

ちなみに3行目の「Worksheets.Add after := Worksheets(Worksheets.Count)」の「after」〇〇番目のシートのということになります。※「Before」なら”〇〇番目のシートの前”になる。

加えて、「Worksheets.Count」現在のワークシートの数を返すプロパティとなっています。

なので、シート数が4つだった場合、3行目の処理内容は「4番目のシートのにシートを追加する」となるわけです。

 

追加シートを変数に入れて操作する

次に場所を指定するのではなく「追加したシート自体を操作する」方法になります。

下は「追加したシート自体を指定して名前を付ける」コードになります。

上のコードでは新しく追加したシートはアクティブシートの左となりに追加されています。

 

上のコードでは「追加したシートを変数に入れ、操作(名前を付ける)する」という処理内容になっています。

5行目:Worksheet型の変数に追加したシートを入れています。※戻り値を取得したい場合は 「Worksheets.Add()」のように「()」を加える。

6行目:追加したシートを入れた変数を名前変更をしている。

スポンサーリンク

コメント