Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35041 / 76732 ←次へ | 前へ→

【46894】Re:シート名だけ保護をする方法
回答  Kein  - 07/2/20(火) 17:00 -

引用なし
パスワード
   >ブックの保護をしてなんとか誤魔化しています
いや、それは誤魔化すということでなく、的確な方法だと思いますよ。
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

というマクロを入れて一端ブックを閉じ、再度開いてシート名を変更
してみて下さい。

2 hits

【46893】シート名だけ保護をする方法 みう 07/2/20(火) 16:02 質問
【46894】Re:シート名だけ保護をする方法 Kein 07/2/20(火) 17:00 回答
【46895】Re:シート名だけ保護をする方法 Jaka 07/2/20(火) 17:01 発言
【46896】Re:シート名だけ保護をする方法 みう 07/2/20(火) 17:57 お礼

35041 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free