タブをダブルクリックして新しい名前を指定することで、ワークシートタブの名前を変更できることはすでにご存知でしょう。ただし、動的に実行したい場合はどうなりますか?セルA1の値をタブ名として自動的に表示したい場合はどうすればよいですか?

残念ながら、Excelはこの種のタスクを処理するための組み込み関数を提供していません。あなたのために仕事をするマクロを使ってそのような関数を開発することは比較的簡単な仕事です。たとえば、次のマクロはタブ名をA1の内容に変更します:

Sub myTabName()

ActiveSheet.Name = ActiveSheet.Range("A1")

End Sub

このマクロについて注意すべき重要な項目がいくつかあります。まず第一に、エラーチェックはありません。これは、A1にタブ名に対して不正な値(まったくない、または31文字を超えるなど)が含まれている場合、マクロがエラーを生成することを意味します。次に、マクロを手動で実行する必要があります。

エラーをチェックして自動的に実行する、より堅牢なマクロが必要な場合はどうなりますか?結果は少し長くなりますが、それでもそれほど複雑ではありません:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Set Target = Range("A1")

If Target = "" Then Exit Sub     On Error GoTo Badname     ActiveSheet.Name = Left(Target, 31)

Exit Sub Badname:

MsgBox "Please revise the entry in A1." & Chr(13) _     & "It appears to contain one or more " & Chr(13) _     & "illegal characters." & Chr(13)

Range("A1").Activate End Sub

このマクロを設定するには、次の手順に従います。

。ワークシートが1つしかない新しいブックを開きます。

。ワークシートタブを右クリックし、表示されるコンテキストメニューから[コードの表示]を選択します。 ExcelはVBAエディタを表示します。

。上記のマクロをコードウィンドウに貼り付け(または入力)します。

。 VBAエディターを閉じます。

。システム上のXLStartフォルダーを見つけます。 (Windowsサーチ機能を使用してフォルダーを見つけます。)

。 XLStartディレクトリにBOOK.XLTという名前を使用して、ブックをExcelテンプレートとして保存します。これにより、テンプレートが、作成する新しいワークブックのパターンになります。

。再度、ワークブックをテンプレートとして同じディレクトリに保存します。今回は、SHEET.XLTという名前を使用します。これにより、テンプレートは、ワークブックに挿入する新しいワークシートのパターンになります。

。 Excelを閉じて再起動します。

これで、セルA1の値を変更するたびに、ワークシートタブも更新されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2145)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。