(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

<実行結果>

なお、シート名に指定できない文字列(半角スラッシュなど)を含む場合すでにあるシート名と同じ名前に変えようとする場合はエラーが起こるので、注意してください。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください