Excel。マクロ34。連番でないシートを増やす方法
<Excel VBA:シート増殖>
次のような4月~9月のような連番になっているシートを一枚一枚挿入していくのは、非常に面倒です。
このように、面倒な作業はマクロを作って実行すると楽なので、
Excel VBAで作ると、次のようになります。
Sub シートを大量挿入()
Dim i As Long
For i = 4 To 9
Sheets.Add(after:=Sheets(Sheets.Count)).Name = i & "月"
Next i
End Sub
For i = 4 To 9~Next i
を使って繰り返すことで、
シートを連番で挿入するという処理をさせています。
今回は、4月~9月ような連番でシートを挿入するのではなく、
次のような場合どのようにしたらいいのでしょうか?
まず、シート名用の表を用意します。
今回は、マスターというシートに次のような表を用意しておきます。
Excel VBAでマクロを作ってみましょう。
Sub シートを大量挿入連番でない()
Dim i As Long
Dim tenpo As String
tenpo = ""
For i = 1 To 5
tenpo = Worksheets("マスター").Cells(i, 1)
Sheets.Add(after:=Sheets(Sheets.Count)).Name = tenpo
Next i
End Sub
では、説明していきます。
For~Nextは、繰り返しなので、説明は割愛します。
tenpo = Worksheets("マスター").Cells(i, 1)
マスターシートのCells(i, 1)。
つまり、A1の値をtenpoという変数に入れるわけですね。
今回は、”新宿”という文字が入ります。
その”新宿”という文字を、
Sheets.Add(after:=Sheets(Sheets.Count)).Name = tenpo
Sheets.Addは、シートを追加するという意味ですね。
(after:=Sheets(Sheets.Count))ですが、afterをつけないと、
アクティブにしているシートの左側に新しいシートが挿入されてしまうので、
afterを使って右側に挿入するようにします。
そして、アクティブになっているのが一番右側にしたいので、
Sheets.Countを使うことで、シートの総枚数を求めることができるので、
Sheets(総シート数)になり、
その右側に新しいシートを挿入することができます。
Nameなので、その新しく挿入されたシートの名前は、tenpo。
つまり、”新宿”という名前が設定することができるという意味になります。
それを、For~Nextを使って、件数分繰り返すことで、
連番でないシート名のシートを挿入することができるのです。
では、実行してみましょう。
このように、簡単なExcel VBAのプログラム文で、
連番でないオリジナルの順番で新しいシートを挿入することができました。
この表の1件ずつを使って、シート名にするわけですから、
仮に、40人分のシート名のシートを挿入するのであれば、
40件入力しておけばいいわけですね。
手で1枚ずつ新しいシートを挿入する手間暇を考えると、
はるかに効率がいいと思います。
現場では、連番でシートを作ることよりも、
何の連続性もないシートを挿入することのほうが多いわけなので、
連番ではないシートを増やす方法も知っているといいですよね。