
お世話になります。
『記入可能セルに記入させ、「送信」フォームを押すと、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
この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、
「色が変わる」という設定がエラーになります。
どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。
ご教示お願いいたします。
No.1ベストアンサー
- 回答日時:
>『記入可能セルに記入させ、「送信」フォームを押すと、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」と打ってもパスが違うといわれてしまいます。。。どうしたらいいでしょうか。。。
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に対してマクロを実行している事になります。
その点も踏まえておいたほうが良いかもしれませんね。
新しいブックでは保護のマクロが正しく動きました。
エラーが出るほうは、私が右も左もわからずにいろいろいじっているので何かいけないことをしているはずです。。。勉強します。
親切に答えてくださり、本当に本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
wordを起動した際に特定のペー...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
エクセルで縦に並んだデータを...
-
ExcelVBAでPDFを閉じるソース
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
マクロ実行時、ユーザーフォー...
-
特定文字のある行の前に空白行...
-
エクセルで特定の列が0表示の場...
-
Excelのセル値に基づいて図形の...
-
VBScript VisioをPDFに変換
-
ExcelVBAの繰り返し処理でwebク...
-
VBAにて別ワークブック上の実行...
-
マクロを使用して、A列にある文...
-
Excel_マクロ_現在開いているシ...
-
EXCELマクロでのThisisWor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excelのセル値に基づいて図形の...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
Excel_マクロ_現在開いているシ...
-
ExcelVBAでPDFを閉じるソース
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
エクセルで縦に並んだデータを...
-
TERA TERMを隠す方法
-
特定文字のある行の前に空白行...
-
Excel マクロでShearePoint先の...
-
UWLSの記録でマクロを作成し使...
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
-
wordを起動した際に特定のペー...
おすすめ情報