Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【Excel/VBAのこと16】ツールをつくる(シートの選択ツール番外編)

【Excel/VBA のこと 16】

   f:id:tuna-kichi:20200223230814p:plain

 

 

 

ツールを作成する際にサンプルのシートを作る必要がありました。

(業務で使用している物を使うことはできないので・・・)

 

その時に作った、シートを複数作成するマクロです。

 

ただ複数のシートを作成するだけでしたら手動でも良いのですが、

規則性のあるシート名を付けたかったので、マクロにしました。

 

シート名の規則として、

・上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・・・完了、終わった

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/