自動で名前の付いたシートを作成する
先日、新規ブックを作成するにあたり、シートを16コ作らねばなりませんでした。
Sheet1の横にある【+】をポチポチクリックすればシート”だけ”は出来ますよ。
sheet2、sheet3、sheet4・・・・・sheet16ってね。
これをまた一つ一つシート名を変えていくのは面倒、と言うより辛い。
でも変えないと後々もっと面倒なことになることは分かってます。
そこでググってみよう!先駆者の知見を掠め取って、学んで見よう!
その1
VBAでシートを追加して、ついでに名前もリストから付けていってしまおうヽ(=´▽`=)ノ
①ブック作成
②sheet1の名前は取り敢えず【list】と名付けよう
③セルA1から順にA5までシートにつける名前を1セルにつき1つ記入しよう
④VBEで下記マクロ作成
Sub シート作成()
Dim SheetName As Range
For Each SheetName In Selection
Sheets.Add After:=Sheets("list")
ActiveSheet.Name = SheetName.Value
Next SheetName
End Sub
⑤マクロ実行
このような感じでできあがりました。
でもなんか逆順(降順)じゃない?
これでも構わないのですが、ちょっと気持ち悪い。
その2
その1ではリストに対してシートが左から製品(n>4>3>2>1)ってなっててちょっとやだ(´・ω・`)
それなので単純に逆順でやればいい。
①ブック作成
②sheet1の名前は取り敢えず【list】と名付けよう
③セルA1から順にA5までシートにつける名前を1セルにつき1つ記入しよう
④VBEで下記マクロ作成
Sub シート作成2()
Dim SheetName As Range
Dim n As Long
n = 5
For Each SheetName In Sheets("list").Range("A1:A5")
Sheets.Add After:=Sheets("list")
ActiveSheet.Name = Sheets("list").Range("A" & n).Value
n = n - 1
Next SheetName
End Sub
⑤マクロ実行
セルA1からの順送りではなくA5から遡っているだけ。
ただそれだけ。
左から昇順なので気分いい?
折角なので・・・
リストからシートを作成したので次はシート名を取得してリスト化するやつ。
①シート名を取得したいブックを開く
②シート【list】を追加作成
③下記マクロ作成
Sub シート名取得()
Dim SheetName As Object
Dim n As Long
n = 1
For Each SheetName In Sheets
Sheets("list").Range("A" & n).Value = SheetName.Name
n = n + 1
Next
End Sub
④マクロ実行
⑤シート【list】A1~にシート名一覧ができている、でしょ?
単純なマクロですが、作業効率的には面倒さ加減が大分減るので良い!と思います。
大したことないと云えば、大したことないですがね。