- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA実行時のシート(複数)保護解除について)
VBA実行時のシート保護解除について
このQ&Aのポイント
- VBAを使って複数のシートでマクロを実行する際のシート保護解除方法を質問します。
- インターネットで検索した結果、マクロの冒頭にActiveSheet.Unprotectをセットし、最後にActiveSheet.Protectを設定することで複数シートに対しての保護解除ができることが分かりました。
- しかし、実際に2シート目以降に対して同じ作業を行うとエラーが発生し、解決方法が分かりません。初心者の私には内容を理解し、組み込むことが難しいです。ご指導いただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず今のマクロはよく出来ていますので,そのまま少し手直して Sub カレンダー作成() Dim 日付, i As Integer 日付 = Application.InputBox _ ("yyyy/m 形式の年月を半角で入力してください" & Chr(10) _ & " 例)2013年の1月 → 2013/1") If 日付 = False Or IsDate(日付) = False Then Exit Sub Range("c3").Value = 日付 For i = 1 To Sheets.Count With Sheets(i) Select Case .Name Case "sheet1", "sheet5" .unprotect ’←対象のシートなら解除して .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))) .protect ’←再度保護する End Select End With Next End Sub といった具合で十分です。
お礼
できました!感動です★スバラシイです☆感激です♪ しかもお褒めの言葉までいただけるとは、ありがとうございます。 ただ、白状しますと、この構文もこのサイトで有識者の 皆さまからアドバイスをいただきながら作成した代物。 まだまだ勉強が足りません。精進いたします。 数多くある質問から、私の質問に対してご教授いただきまして、 本当にありがとうございました。 機会がありましたら、ぜひまたよろしくお願いいたします。 本当に、ありがとうございました。