1. 基本の「き」:シートを追加するだけ
まずは、シンプルにシートを追加するだけのコードです。
手で「+」ボタンを押すのと同じ動きをします。
Sub シートを追加する()
' 新しいシートを先頭に追加します
Worksheets.Add
End Sub
これだと、シートが一番「左(先頭)」に追加されます。「あれ?いつも右側に追加されるのに…」と違和感がありますよね。
2. 本題:一番後ろに追加して、名前をつける
ここからが本番です。
「一番右(最後尾)に追加」して、「すぐに名前をつける」。
これを人間がやるとマウス操作が3回必要ですが、VBAなら一瞬です。
以下のコードをコピーして使ってください。
Sub シートを追加して名前を変える()
Dim NewSheetName As String
' ▼ここにつけたい名前を入れてください
NewSheetName = "集計用データ"
' シートを一番後ろ(Worksheets.Countの後)に追加して、名前を変更
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = NewSheetName
MsgBox "シート「" & NewSheetName & "」を作成しました!", vbInformation
End Sub
解説(ざっくりでOKです):
- Worksheets.Add :シートを追加せよ!という命令。
- After:=Worksheets(Worksheets.Count) :「今あるシートの枚数分(Count)数えた、その後ろ(After)」=「一番後ろ」という意味です。
- .Name = :そのままずばり、名前をつける命令です。
1シート作るだけなら、わざわざコードを書く必要なんてありませんが、これが「毎月12枚」や「拠点ごとに数十枚」となると、VBAの真価が発揮されます。
3. 応用編:47都道府県のシートを一括作成する
というわけで「一括で大量のシートを作る」ためのコードがこちらです。
配列(Array)という箱に名前を詰め込んで、一気にループ処理を行います。
47都道府県分のシート作成でもこのコードなら1~2秒で終わります。
Sub 都道府県シートを一括作成()
Dim prefNames As Variant
Dim i As Long
' 47都道府県の名前を配列に格納
prefNames = Array("北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", _
"茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", _
"新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", _
"静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", _
"奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", _
"徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", _
"熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県")
' 高速化のため画面更新を停止
Application.ScreenUpdating = False
For i = LBound(prefNames) To UBound(prefNames)
' 最後尾に追加して名前を設定
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = prefNames(i)
Next i
' 画面更新を再開
Application.ScreenUpdating = True
MsgBox "47都道府県のシートを作成しました!", vbInformation
End Sub
4. 注意点:シート名の重複はNG
Excelの仕様上、同じ名前のシートは1つのブック内に2枚存在できません。
もし同じ名前のシートがすでにある状態で実行すると、エラー(黄色いデバッグ画面)が表示されます。
その場合は「終了」ボタンを押し、シート名を変更するか、既存のシートを削除してから再度実行してくださいね。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント