| 
    
     |  | >ブックの保護をしてなんとか誤魔化しています いや、それは誤魔化すということでなく、的確な方法だと思いますよ。
 Protect する対象に、シート名だけを選ぶことは出来ませんから。
 なので "もしシート名を変更されても、何らかのタイミングで元に戻す"
 という発想で対応するしかないでしょうね。例えば ThisWorkbook モジュールに
 
 Private ShN() As String
 
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Dim i As Integer
 
 With ThisWorkbook.Worksheets
 For i = 1 To .Count
 If .Item(i).Name <> ShN(i) Then
 .Item(i).Name = ShN(i)
 End If
 Next i
 End If
 Erase ShN
 ThisWorkbook.Save
 End Sub
 
 Private Sub Workbook_Open()
 Dim i As Integer
 
 With ThisWorkbook.Worksheets
 ReDim ShN(1 To .Count)
 For i = 1 To .Count
 ShN(i) = .Item(i).Name
 Next i
 End With
 End Sub
 
 Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Dim Ind As Integer
 
 Ind = Sh.Index
 If Sh.Name <> ShN(Ind) Then Sh.Name = ShN(Ind)
 End Sub
 
 というマクロを入れて一端ブックを閉じ、再度開いてシート名を変更
 してみて下さい。
 
 |  |