Excel2010 マクロ講座 31回

セルに入力されたタイトルをシート名に

毎月の売上シートなどは、いつのまにたくさん溜まってしまいますね。 Sheet1~Sheet12などとなってしまうと、シートの名前変更も1枚ごとでは大変です。
以前3行マクロ(mini_macro1.htm)でシート名を変更するマクロを紹介しましたが、今回は複数のシート名をいっぺんに設定するという内容です。

(サンプルファイルは、こちらから 2010マクロ講座31回サンプルデータ

セルの文字列をシート名に

3行マクロのコードは、こんなに短いコードでした。
Sub シート名を選択セルの文字に()
    ActiveSheet.Name = ActiveCell.Value
End Sub
今度は複数シートですので、同じ処理を繰り返して行う必要があります。 そんなときに役に立つのが、おなじみのFor Each~Nest
For Each~Nextステートメント
以下のようなブックで、どのシートにもA1セルにタイトルが入っているとします。
セルをシート名にするマクロ1
A1セルの値をシート名にするコードは、
Sub セルをシート名にする()
    Dim mysheet As Worksheet
    For Each mysheet In Worksheets
        mysheet.Name = mysheet.Range("A1").Value
    Next
End Sub

セルをシート名にするマクロ2

エラー対策

このサンプルの場合、A1セルにタイトルが入っているという前提のマクロですが、 もしも、A1セルにタイトルが入ってない場合は、エラーとなってしまいます。そこで、エラーを無視して、飛ばして処理を続行するというようコードを1行追加しましょう。
Sub セルをシート名にする2()
    Dim mysheet As Worksheet
    On Error Resume Next
    For Each mysheet In Worksheets
        mysheet.Name = mysheet.Range("A1").Value
    Next
End Sub
これで、A1セルにタイトルが入っているシートはそのタイトルがシート名になります。 もし、A1セルにタイトルが入ってない場合でも、以前のシート名のままで終了しますから、個別に変更するなどしてください。
お疲れ様でした。
スポンサーリンク
スポンサーリンク