• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで保護したシート内の書式設定を可能にしたい)

Excel VBAでシート内の書式設定を保護可能にする方法

このQ&Aのポイント
  • エクセルVBAを使用して、保護されたシート内の書式設定を編集可能にする方法について知りたいです。
  • 記入可能なセルに値を入力し、送信ボタンを押すと、一部の文字列の色が変わり、メールで送信されるマクロを作成しましたが、保護されたシートで色が変わらないエラーが発生しています。
  • セルの書式設定の保護を解除するためのマクロを作成したが、一部のセルで色が変わらないエラーが発生しています。色が変わらない問題を解決する方法について教えてください。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。』というマクロ このマクロを 「送信」フォームを押すと、 【そのシートの保護を解除し、】 1箇所文字の色を変え、 【再保護し、】 添付されてメールで送られる。 ...と作り変えるか、 Sub 保護()   Dim Ws As Worksheet   For Each Ws In Worksheets     Ws.Protect Password:=111, userInterfaceOnly:=True   Next End Sub ...と変更し、マクロでの変更を許可して保護するか、などが考えられます。

yrrpk059
質問者

補足

このマクロを 「送信」フォームを押すと、 【そのシートの保護を解除し、】 1箇所文字の色を変え、 【再保護し、】 添付されてメールで送られる。 ...と作り変えるか、 なるほどなるほど!です!! 視点を変えたらいいんですね。 おかげで問題解決しました! 本当にありがとうございました。 ちなみになんですが、、、もしよろしければ、、、もうひとつ疑問が残っておりまして。 質問文にあるように Sub 保護() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Protect Password:=111 Next End Sub で、保護をかけているのに、シートを個別で保護を解除しようとすると、パスワードを要求されずに解除できてしまいます。 そこで、Ws.Protect Password:=111のコロンをとって実行すると、パスワードを要求されるのですが、「111」と打ってもパスが違うといわれてしまいます。。。どうしたらいいでしょうか。。。

その他の回答 (1)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>そこで、Ws.Protect Password:=111のコロンをとって実行すると、 これが失敗だったようですね。 同じように Sub 保護解除()   Dim Ws As Worksheet   For Each Ws In Worksheets     Ws.Unprotect Password = 111   Next End Sub これで解除してください。 モジュールの先頭(General)セクションで Option Explicit ステートメントを使っていませんね? 変数宣言を強制していないと、『Password』がコンパイルエラーにならず、変数と見なされてしまいます。 多分その辺りが影響しているのでしょう。 Option Explicit ステートメントは使ったほうが良いと思います。 また、 >保護をかけているのに、シートを個別で保護を解除しようとすると、パスワードを要求されずに解除できてしまいます。 これは何かの間違いでしょう。よく確認してみてください。 新規Bookで同様の現象が発生するかどうか試してみると良いでしょう。 ちなみに >For Each Ws In Worksheets この場合 Worksheets の親が指定されていませんから、 ActiveなBookに対してマクロを実行している事になります。 その点も踏まえておいたほうが良いかもしれませんね。

yrrpk059
質問者

お礼

新しいブックでは保護のマクロが正しく動きました。 エラーが出るほうは、私が右も左もわからずにいろいろいじっているので何かいけないことをしているはずです。。。勉強します。 親切に答えてくださり、本当に本当にありがとうございました!!

関連するQ&A

専門家に質問してみよう