VBA実行時のシート(複数)保護解除について
いつも勉強させていただいております。VBA初心者です。
早速ですが、あるマクロを複数のシートで実行するとき、
シートに設定されている「シートの保護」を解除したいのですが、
複数シートに対しての処理方法が分かりません。
インターネットで検索した結果、
ActiveSheet.Unprotect を実行したいマクロの冒頭にセットし、
最後にActiveSheet.Protectを設定すればよいことは分かりました。
(私としての理解:こうすることで、シートの保護解除⇒保護となる。)
その結果、
Sub カレンダー作成()
'ワークシートを非保護にする
ActiveSheet.Unprotect
Dim 日付, i As Integer
日付 = Application.InputBox _
("yyyy/m 形式の年月を半角で入力してください" & Chr(10) _
& " 例)2013年の1月 → 2013/1")
Range("c3").Value = 日付
If 日付 = False Or IsDate(日付) = False Then Exit Sub
For i = 1 To Sheets.Count
With Sheets(i)
Select Case .Name
Case "sheet1", "sheet5"
.Range("G5").Resize(, 31).ClearContents
.Range("C3,G5").Value = DateSerial(Year(日付), Month(日付), 1)
.Range("G5").AutoFill Destination:=.Range("G5"). _
Resize(, Day(DateSerial(Year(日付), Month(日付) + 1, 0)))
End Select
End With
Next
'ワークシートを保護する
ActiveSheet.Protect
End Sub
と言った構文を作成し、1シートについての作業は成功しました。
ところが、2シート目以降にはエラーとなるのです。
この作業を、複数のシートに対して同時に、1回の操作で実行したいのです。
色々と調べてみて、それらしいサイトも見てみたのですが、初心者の私には、
その内容を理解し、自分のVBAに組み込むことが到底できませんでした。
有識者のみなさま、どうかご指導をよろしくお願いいたします。
お礼
早速ご回答いただき有難うございました。 私もいろいろと検索しましたが見つからずこちらで質問させていただきました。 今後ともよろしく御願いします。