【Excel/VBA のこと 16】
ツールを作成する際にサンプルのシートを作る必要がありました。
(業務で使用している物を使うことはできないので・・・)
その時に作った、シートを複数作成するマクロです。
ただ複数のシートを作成するだけでしたら手動でも良いのですが、
規則性のあるシート名を付けたかったので、マクロにしました。
シート名の規則として、
・上3桁は数字(001~030と決めた)
・下2桁はアルファベット(AA, AB, AC と決めた)
・数字とアルファベットをアンダーバーでつなげる
と決めました。
つまり、各数字につきA, B, C の3種類のシート名が作成されます。
これを3枚程度でしたら手動でも良いのですが、
10枚以上作るとなると非常に面倒です。
マクロ
Sub makesheet()
Dim s As Long 'ループに使う適当な変数
Dim p As Long 'ループに使う適当な変数
Dim ShCnt As Long
For s = 1 To 30 'ここは数字のループ(001~030)
For p = 1 To 3 'ここはアルファベットのループ(AA, AB, AC)
ShCnt = Sheets.Count 'シートの枚数を数えておく
Select Case p
Case Is = 1
'末尾にシートを追加する
Worksheets.Add after:=Sheets(ShCnt)
'シートを追加するとそのシートがアクティブになる
ActiveSheet.Name = "00" & s & "_AA"
Case Is = 2
Worksheets.Add after:=Sheets(ShCnt)
ActiveSheet.Name = "00" & s & "_AB"
Case Is = 3
Worksheets.Add after:=Sheets(ShCnt)
ActiveSheet.Name = "00" & s & "_AC"
End Select
Next p
Next s
MsgBox "done" '完了したことを通知する
End Sub
この記述方法は、行、列のチェックなどに応用できます。
「s」のループは列、「p」のループは行で、
最初のセルを処理したら、次の行に移動。
最後の行を処理したら、次の列に移動 という流れです。
マクロの最後に MsgBox "done" をつけ足しておくと
完了したことが分かるので便利ですよ。
※Done・・・完了、終わった
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/