• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA実行時のシート(複数)保護解除について)

VBA実行時のシート保護解除について

このQ&Aのポイント
  • VBAを使って複数のシートでマクロを実行する際のシート保護解除方法を質問します。
  • インターネットで検索した結果、マクロの冒頭にActiveSheet.Unprotectをセットし、最後にActiveSheet.Protectを設定することで複数シートに対しての保護解除ができることが分かりました。
  • しかし、実際に2シート目以降に対して同じ作業を行うとエラーが発生し、解決方法が分かりません。初心者の私には内容を理解し、組み込むことが難しいです。ご指導いただければ幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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 といった具合で十分です。

rosso13
質問者

お礼

できました!感動です★スバラシイです☆感激です♪ しかもお褒めの言葉までいただけるとは、ありがとうございます。  ただ、白状しますと、この構文もこのサイトで有識者の 皆さまからアドバイスをいただきながら作成した代物。 まだまだ勉強が足りません。精進いたします。  数多くある質問から、私の質問に対してご教授いただきまして、 本当にありがとうございました。  機会がありましたら、ぜひまたよろしくお願いいたします。 本当に、ありがとうございました。

関連するQ&A