(Excelマクロ)シート名を変更する
このページで解説するマクロは次の通りです。上から順番に解説します。
シートAをシートBに名前を変更する
For Each ~ inを利用します。
サンプルマクロ
Public Sub Sample1() Dim sh as Variant For Each sh In Sheets With sh If .Name = "Sheet1" Then .Name = "ABC" Exit Sub End If End With Next sh MsgBox "見つかりません" End Sub
<実行結果>
解説
Sheet1という名称のシートを探し、もし該当のシートがあれば、シート名を「ABC」に変えます。
新規追加するシート名を入力する
サンプルマクロ
Public Sub Sample2() Dim shName As String shName = Application.InputBox("新しいシートのシート名を入力してください。", _ Title:="入力", Type:=2) If shName = "False" Then Exit Sub Sheets.Add ActiveSheet.Name = shName End Sub
<実行結果>
解説
新規に挿入するシートは必ずアクティブ状態になるので、ActiveSheetで特定可能です。なお、一番左にあるシート名を変えたいときは、上記のマクロの7~8行目を以下のように変更します。
Sheets(1).Name = shName
Sheet(1)は一番左にあるシートを、Sheet1は単にシート名を指します。
1月~12月までのシートを作成する
手打ちで一つひとつシートを付け足す作業は意外と面倒くさいものです。以下のマクロをコピーすれば瞬時にシートが作成されるのでおすすめです。
サンプルマクロ
Public Sub Sample3() ActiveSheet.Name = "1月" Dim i As Long For i = 2 To 12 Step 1 Sheets.Add After:=Sheets(i - 1) ActiveSheet.Name = i & "月" Next i End Sub
<実行結果>
解説
新規に追加するシートが必ず前のシートの後になるように指定しています。もし、月の数字を全角にしたい場合は、StrConv関数を用いて5行目を以下のように変更します。
ActiveSheet.Name = StrConv(i, vbWide) & "月"
<実行結果>
サンプルでは「月」で示していますが、もちろん「年」表記にすることも可能です。その場合は、以下のようにマクロを組み替えます。
Public Sub Sample4() ActiveSheet.Name = "2010年" Dim i As Long Dim year As Long year = 2011 For i = 2 To 9 Step 1 Sheets.Add After:=Sheets(i - 1) ActiveSheet.Name = year & "年" year = year + 1 Next i ''2010年から2018年までシートが生成されます End Sub
<実行結果>
なお、シート名に指定できない文字列(半角スラッシュなど)を含む場合やすでにあるシート名と同じ名前に変えようとする場合はエラーが起こるので、注意してください。
最近のコメント