シートを一度に複数追加するには
シートの追加を複数行うには、Sheets.AddメソッドかWorksheets.Addメソッドを必要な回数繰り返すことになります。
なお、シートの追加についての詳細は「VBAでシートの追加を行う」をご参照ください。
ただ追加するだけであれば引数無しのWorksheets.Addメソッドを何度も実行すればいいのですが、シート見出しの一番左にSheet2、Sheet3と連番で追加されるだけなので、シート名を付けたい場合はNameプロパティを設定する必要があります。
以下で紹介するコードは、カンマ区切りのシート名を文字列として引数に渡されると、そのシート名で追加する処理になります。
コード
引数で渡された”aa,bb,cc”のようなカンマで区切られた文字列を元に新規シートを追加するコードです。
前提として、新規するシートはアクティブウィンドウの一番右のシートになります。複数のシートを追加する場合は一番右に追加されていきます。
このコードはわかりやすさを優先するため、あえてエラー処理は入れていません。そのため、引数文字列が不正の場合は異常終了することもあり得ます。
引数文字列が既存シート名と重複しないことを確認してください。引数の文字列のフォーマットは”aa,bb,cc”のように追加するシート名をカンマで区切ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub MultiSheetsAdd(sSheets As String) Dim iSheetCount '// アクティブブックのシート数 Dim i '// ループカウンタ Dim sht As Worksheet '// 追加するワークシートオブジェクト Dim v '// 引数文字列をカンマで分割した文字列配列 '// 引数文字列をカンマで分割し、その結果を配列で取得 v = Split(sSheets, ",") '// アクティブブックのシート数を取得 iSheetCount = ActiveWorkbook.Sheets.Count '// 一番右のシートを選択 Sheets(iSheetCount).Select '// カンマ区切りの数だけループ For i = 0 To UBound(v) '// アクティブシートの右に新規シートを追加 Set sht = Sheets.Add(After:=ActiveSheet) '// シート名を設定 sht.Name = v(i) Next End Sub |
上の関数を呼び出すコードです。引数に追加するシート名をカンマ区切りで指定します。
1 2 3 |
Sub MultiSheetsAddTest() Call MultiSheetsAdd("1,2,3,10,11,13") End Sub |
実行すると、1、2、3、10、11、13のシートが作成されます。