「エクセル vba 何枚目かをシート名に」
「エクセル vba 何枚目かを取得してシート名に」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
何枚目のシートなのかが簡単にわかるように、連番をシート名に付加するExcel VBA(Visual Basic for Applications)のコードを探している方による検索です。
シート名に連番をつけるサンプルマクロ
以下のSubプロシージャを実行すると、現在のシート名の前に「1.」「2.」のような形で、連番が振られます。
Dim i As Long For i = 1 To Sheets.Count
Sheets(i).Name = _
Left(i & "." & Sheets(i).Name, 31)
Next i
End Sub
サンプルマクロの解説
全シートにFor~Nextループを回して、
For i = 1 To Sheets.Count
元のシート名の前に、カウンター変数・iを利用して、連番を付加しています。
Sheets(i).Name = _
Left(i & "." & Sheets(i).Name, 31)
元々のシート名に長い名前がなければ、
Sheets(i).Name = _
i & "." & Sheets(i).Name
でもOKですが、Excelの仕様では32文字以上の名前を付けられないので、
Left(i & "." & Sheets(i).Name, 31)
と、Left関数を使って31文字までにしています。
イミディエイトウィンドウからコードを実行してシート名に連番をつける
この程度のコードなら、イミディエイトウィンドウからコードを実行するというのも、ありでしょう。イミディエイトウィンドウに、
for i = 1 to sheets.Count: sheets(i).name = i & "." & sheets(i).name: next
というコードを入力して[Enter]キーを押す
コードウィンドウで、「:」(コロン)をステートメントの末尾につけることで、複数のステートメントを1行に書くことができます。
イミディエイトウィンドウでもこのルールは同じで、
for i = 1 to sheets.Count
sheets(i).name = i & "." & sheets(i).name
の末尾に「:」をつけて1行にしたのが、
for i = 1 to sheets.Count: sheets(i).name = i & "." & sheets(i).name: next
です。
シート名は31文字までという仕様も入れておくなら、
for i = 1 to sheets.Count: sheets(i).name = left(i & "." & sheets(i).name, 31): next
です。
- Newer:VBAで複数行を選択する
- Older:ActiveWorkbook.Nameから拡張子
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名に連番を振るExcelマクロ