セルの文字列をシート名にするマクロ
Sheet1、Sheet2、Sheet3などいうシート名をわかりやすく名前変更するマクロの紹介です。
![セルの文字列をシート名にするマクロ](../gazo2022/excel2010macro_31.png)
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ステートメント](../gazo2013/macro/2013_macro_28-04.png)
以下のようなブックで、どのシートにもA1セルにタイトルが入っているとします。
![セルをシート名にするマクロ1](gazo/macro/macro_31_01.png)
![セルをシート名にするマクロ1](gazo/macro/macro_31_01.png)
A1セルの値をシート名にするコードは、
![セルをシート名にするマクロ2](gazo/macro/macro_31_02.png)
Sub セルをシート名にする() Dim mysheet As Worksheet For Each mysheet In Worksheets mysheet.Name = mysheet.Range("A1").Value Next End Sub
![セルをシート名にするマクロ2](gazo/macro/macro_31_02.png)
エラー対策
このサンプルの場合、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セルにタイトルが入ってない場合でも、以前のシート名のままで終了しますから、個別に変更するなどしてください。
お疲れ様でした。