こんばんは!
質問を読む限りでは、すべてのSheetでそうしたいのか?
それともあるSheetのD2セルの値が変わったときにそのSheet名をD2セルの値にしたいのか?
が判断しかねますが・・・
いずれにしてもVBAでの一例です。
(1)すべてのSheetの場合
Alt+F11キー → 左下の「This Workbook」をダブルクリック → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sheet名() 'この行から
Dim k As Long
For k = 1 To Worksheets.Count
If Worksheets(k).Range("D2") <> "" Then
Worksheets(k).Name = Worksheets(k).Range("D2")
End If
Next k
End Sub 'この行まで
(2)そのSheet限定の場合
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストし、D2セルのデータを色々変更してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("D2")) Is Nothing Or Selection.Count <> 1 Then Exit Sub
If Target <> "" Then
ActiveSheet.Name = Target
Else
Exit Sub
End If
End Sub 'この行まで
※ 外していたらごめんなさいね。m(_ _)m