エクセルで新しいシートを作成したい場面があります。
今回は、エクセルVBAを使って「新しいシートを作成する」「シート名を変更する方法」を解説します。
【マクロVBA】新しいシートを作成して、シート名を変更する方法を解説
新しいシートを作成して、シート名を変更するコードを紹介します。
Sub CreateAndRenameSheet()
Dim NewSheet As Worksheet
' 新しいシートを作成
Set NewSheet = Worksheets.Add
' シート名を「テストシート」に変更
NewSheet.Name = "テストシート"
End Sub
このコードをVBAエディタの標準モジュールに貼り付け、実行することで新しいシートが作成され、「テストシート」という名前に変更されます。
コードの解説
Dim NewSheet As Worksheet
この行では、NewSheet
という名前のWorksheet
オブジェクト用の変数を宣言しています。
これにより、新しく作成されたシートを参照するための変数が用意されます。
Set NewSheet = Worksheets.Add
この行では、Worksheets.Add
メソッドを使用して新しいシートを作成し、そのシートをNewSheet
変数に代入しています。
Worksheets.Add
メソッドは、新しいシートを作成し、作成されたシートへの参照を返します。これにより、NewSheet
変数に新しいシートへの参照が格納されます。
NewSheet.Name = "テストシート"
この行では、先ほど作成したシート(NewSheet
変数が参照しているシート)の名前を変更しています。
シートオブジェクトのName
プロパティに新しい名前を代入することで、シート名が変更されます。この場合、シート名を「テストシート」としています。
他のやり方でも作成可能
他のコードの書き方もあります。
Sub CreateAndRenameSheet()
' 新しいシートを作成
Worksheets.Add
' シート名を「テストシート」に変更
ActiveSheet.Name = "テストシート"
End Sub
どちらのコードも同じ結果を得ることができます。
ただし、最初のコードは、新しく作成されたシートをNewSheet
という変数に格納しているため、その後の処理で新しく作成されたシートを簡単に参照できます。これはコードの可読性と保守性に寄与します。
一方、こちらのコードではActiveSheet
を使用してシート名を変更しています。
ActiveSheet
は現在アクティブなシートを参照するため、新しいシートが作成された直後には問題ありません。
ただし、この方法では後続の処理で新しく作成されたシートを参照する際に、再度アクティブシートを指定する必要があります。これにより、コードの可読性と保守性が低下する可能性があります。
どちらの方法でも問題はありませんが、最初コードは可読性と保守性が向上します。
状況やニーズに応じて使い分けてください。
コメント