- ベストアンサー
マクロのクリア設定がシートの保護を行うと機能しない理由
- マクロのクリア設定を行っている際に、シートの保護を行うとマクロが機能しない理由について説明します。
- マクロを設定している場合、シートの保護を行うとマクロが制限されることがあります。
- 特に、セルの保護設定が影響を与える場合があります。d列では「ロックなし」「表示する」、e列では「ロックなし」「表示しない」となっているため、マクロのクリア設定が正しく機能しない可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>sheet全てにプロテクトがかかってしまうという状況になり・・ 意味がよく解りませんが・・・。 マクロでは保護の掛かったシートを変更することができないので、プログラムを組む場合はそのことを頭に置いて、保護の解除と保護を適切なところで行う必要があります。 基本的には、保護シートを操作するマクロの先頭に「保護の解除」、最後に「保護」のコードを記入すれば良いのですが・・・。 保護設定のオプションもエクセルのバージョンによって違うので書きませんでしたが、記録マクロを使って保護を設定すれば、保護オプションを含めたコードを取得できるので、書き換えれば良いでしょう。 マクロで何度も保護の解除と保護設定をしなくても済むようにする方法がありますが、エクセル起動時に一度だけ実行して置く必要があります。 ActiveSheet.Protect UserInterfaceOnly:=True http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_040.html
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
マクロで、シート保護の解除と保護の設定を行うだけです。 sub test() ActiveSheet.UnProtect '処理 ActiveSheet.Protect end sub
お礼
ありがとうございました。 どうにか、設定することができました<__>
補足
早々にご回答ありがとうございます <(__)>。 ご回答いただいたマクロを利用すると、sheet全てにプロテクトがかかってしまうという状況になり・・・エラーになってしまいます。 実は、もう一つマクロ↓を入れておりまして、 Sub test() Range("A6:C111").Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("D6").Select End Sub このマクロを実行した後に、d列およびe列のセル内容表示をクリアし、 『d列は、再入力できる状態に、e列は結果を表示』 を繰り返し行えるようにしたいのですが・・・。 お力を貸して頂けると幸いです。
お礼
ありがとうございました。 どうにか、設定することができました<__>
補足
お忙しいところご回答いただきありがとうございました。 マクロを組んでいる際は、シート保護をかけていないのですが、 マクロ1(ソート) Sub test() Range("A6:C111").Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("D6").Select End Sub マクロ2(クリア) On Error Resume Next With ActiveSheet.Range("d:e").SpecialCells(xlCellTypeConstants, 23) .ClearContents End With 2つのマクロを設定した後、シート保護をかけた段階で、 ソートのマクロはうまく機能いくのですが、クリアのマクロが機能しません (;;) 的外れな、補足かもしれませんが・・・ ご助言いただけると、助かります。