• ベストアンサー

Excel シートの保護 VBA

「データ」、「A」という名称の2つのシートを ブック起動時にパスワードつきで保護したいと考えています。 また、マクロ(VBAのフォーム?)のみで更新できるようにしたいとも考えています。 Dim sheet1 As Worksheet Set sheet1 = Worksheets("データ") sheet1.Protect Password:="pass", _ AllowFormattingCells:=True 上記のやり方があると見たので、 ThisWorkBookに貼り付けて保存し、再起動してみたのですが 普通に、「データ」のシートに書き込めてしまいます。 何もエラーも出ないため、どう考えればよいのかも分かりません。 回答よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ThisWorkbookに private sub Workbook_Open() worksheets("データ").protect password:="pass", userinterfaceonly:=true, allowformattingcells:=true worksheets("A").protect password:="pass", userinterfaceonly:=true, allowformattingcells:=true end sub のようにすることで,マクロからの編集は妨げられずに,シートを保護します。 #Sheet1など既存のオブジェクト名や予約語を変数名に使ってはいけません。

satoron666
質問者

お礼

回答ありがとうございます。 Workbook_Open() という記述にするのを忘れていたのですね。 そして、オブジェクト名や予約語を使うのは良くない というご指摘、ありがとうございます。 今後気をつけてより良いものを作れるよう頑張ります!

関連するQ&A