一回も披露したことのない豆知識

お世話になります。

『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。』というマクロを組みました。

その後、
シートがたくさんあるので、VBAを使って、一度にシートの保護、非保護を行いました。
以下はその記述文です。

Sub 保護()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Protect Password:=111
Next
End Sub

Sub 保護解除()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Unprotect Password:=111
Next
End Sub

この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、
「色が変わる」という設定がエラーになります。
どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。
ご教示お願いいたします。

A 回答 (2件)

>『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。

』というマクロ

このマクロを
「送信」フォームを押すと、
【そのシートの保護を解除し、】
1箇所文字の色を変え、
【再保護し、】
添付されてメールで送られる。
...と作り変えるか、


Sub 保護()
  Dim Ws As Worksheet
  For Each Ws In Worksheets
    Ws.Protect Password:=111, userInterfaceOnly:=True
  Next
End Sub
...と変更し、マクロでの変更を許可して保護するか、などが考えられます。

この回答への補足

このマクロを
「送信」フォームを押すと、
【そのシートの保護を解除し、】
1箇所文字の色を変え、
【再保護し、】
添付されてメールで送られる。
...と作り変えるか、

なるほどなるほど!です!!
視点を変えたらいいんですね。
おかげで問題解決しました!

本当にありがとうございました。

ちなみになんですが、、、もしよろしければ、、、もうひとつ疑問が残っておりまして。

質問文にあるように
Sub 保護()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Protect Password:=111
Next
End Sub

で、保護をかけているのに、シートを個別で保護を解除しようとすると、パスワードを要求されずに解除できてしまいます。
そこで、Ws.Protect Password:=111のコロンをとって実行すると、パスワードを要求されるのですが、「111」と打ってもパスが違うといわれてしまいます。。。どうしたらいいでしょうか。。。

補足日時:2008/08/15 18:55
    • good
    • 1

>そこで、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に対してマクロを実行している事になります。
その点も踏まえておいたほうが良いかもしれませんね。
    • good
    • 1
この回答へのお礼

新しいブックでは保護のマクロが正しく動きました。
エラーが出るほうは、私が右も左もわからずにいろいろいじっているので何かいけないことをしているはずです。。。勉強します。

親切に答えてくださり、本当に本当にありがとうございました!!

お礼日時:2008/08/18 12:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!