Excelでは、特定の命名規則に従って複数のシートを一括作成する必要がある場合があります(例えば、筆者が現在テスト用のエビデンススクリーンショットを作成している際に、事前に指定された名称と数のシートを準備する必要がある状況)。VBA(Visual Basic for Applications)を使用することで、このような作業を簡単に実現できます。本記事では、そのためのVBAコードの作成方法について詳しく説明します。
目的
指定した名前とシート数を入力することで、指定された数のシートを作成し、各シートの名前は 名前_番号_OK
の形式で命名されます。例えば:CD0101_001_OK
、CD0101_002_OK
などです。
実装手順
1. Excelを開き、VBAエディターに移動する
まず、操作したいExcelファイルを開いてください。その後、ショートカットキー Alt + F11
を押して、VBAエディターを開きます。
2. 標準モジュールを挿入する
VBAエディター内で、以下の手順で標準モジュールを挿入します:
- 左側の Project Explorer ウィンドウで、
VBAProject (あなたのExcelファイル名)
を見つけます。 -
VBAProject
を右クリックし、Insert (挿入)
を選択して、次にModule (モジュール)
をクリックします。 - すると、右側に空白の編集エリアが表示され、これで新しい標準モジュールが挿入されたことを示しています。
※VBAエディターでモジュールを挿入する際に、Class Module
と Module
という選択肢が表示された場合は、 Module
を選択してください。
違い:
- Module(標準モジュール):通常のマクロコード(シート作成機能など)を格納するためのもので、最も一般的なタイプです。
- Class Module(クラスモジュール):カスタムオブジェクトやクラスを作成するためのもので、より高度なプログラミングに使用されます。
今回のニーズ(複数のシートを作成する)では、 標準モジュール を使用すれば十分ですので、 Module を選択してください。
3. VBAコードを貼り付ける
挿入したモジュール内に、以下のVBAコードを貼り付けます:
Sub CreateSheets()
Dim sheetName As String
Dim sheetCount As Integer
Dim i As Integer
Dim newSheet As Worksheet
' 名前とシート数を入力
sheetName = InputBox("名前を入力してください:")
sheetCount = InputBox("作成するシート数を入力してください:")
' 指定された数のシートを作成するループ
For i = 1 To sheetCount
' 新しいシートを作成
Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
' シート名を設定、形式は "名前_番号_OK"
newSheet.Name = sheetName & "_" & Format(i, "000") & "_OK"
Next i
End Sub
4. コードを実行する
コードを貼り付けた後、以下の手順でマクロを実行します:
- VBAエディターで、
F5
キーを押すか、メニューのRun (実行)
ボタンをクリックします。 - システムが入力ボックスを表示し、名前の入力を求めてきます。例えば、
CD0101
と入力します。 - 次に、作成するシートの数を入力するための入力ボックスが表示されます。例として、
5
と入力します。
完了後、Excelは自動的に5つの新しいシートを作成し、それぞれの名前は次のようになります:
CD0101_001_OK
CD0101_002_OK
CD0101_003_OK
CD0101_004_OK
CD0101_005_OK
5. 注意点
- シート名の重複:Excelに同じ名前のシートが既に存在する場合、エラーメッセージが表示されます。シート名が一意であることを確認してください。
- マクロの実行をキャンセル:入力中に操作をキャンセルしたい場合は、入力ボックスの「キャンセル」ボタンをクリックしてください。
まとめ
簡単なVBAコードを使用することで、特定の名前付きシートを一括作成する操作が簡単に行えます。この手法は作業効率の向上に役立つでしょう。この記事があなたのお役に立てば幸いです!