シート保護とグループ化機能を両立するマクロでエクセル2010

このQ&Aのポイント
  • エクセル2010で、特定のセルにロックをかけてシートを保護し、さらにグループ化機能を使いたい場合、以下のマクロを使用することで両立できます。
  • ただし、このマクロを使用すると「セルの書式設定」のチェックが外れ、文字の色などを変更できなくなる場合があります。
  • 上記の問題を解決するためには、コードを修正する必要があります。具体的な修正内容については、アドバイスをお待ちしています。
回答を見る
  • ベストアンサー

シート保護とグループ化機能を両立するマクロで

エクセル2010です。 任意のセルにロックをかけて、シートを保護しています。 さらに、グループ化の開閉(左の欄で+と-で展開したり畳んだりする)機能を使いたのですが、シートの保護がかかっていると通常ではこれができません。 そこで調べたところ、以下のマクロでそれが両立できることがわかりました。 Sub 保護したままグループ開閉() With Worksheets("Sheet1") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub しかし、シート保護のメニューで「ロックされていないセルの範囲選択」と「セルの書式設定」にチェックを入れて許可にしているのですが、このマクロをかけると、「セルの書式設定」のチェックが外れてしまい、文字の色等が変えられなくなってしまいます。 これを防止するには、上記のコードをどのように変えれば良いでしょうか? アドバイスよろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

あなたのマクロを .Protect allowformattingcells:=true と修正します。

markey08
質問者

お礼

ありがとうございます! 修正というか、このコードを追加したらうまくいきました。助かりました。

関連するQ&A

  • エクセル シートを保護してる時のセル結合

    エクセル2010を使用しています。 仕事の成果を一定の様式に記入してもらいます。書式、関数などを変更してもらいたくないのでシートに保護をかけました。 記入してもらうところだけセルのロックをはずし入力OKに設定しました。 しかし、シートの保護をかけるとロックをはずしててもセルの結合はできないんですね。なので、過去の質問からシートの保護がかかっていてもマクロですべての操作をしようできるというマクロ↓を参考にしてみました。 Sub seru() ActiveSheet.Protect UserInterFaceOnly:=True End Sub これと、セルを結合するマクロ↓を考えたのですが、どのように2つをくっつけたらいいのかがわかりません。 If TypeName(Selection)="Range"and Selection.Cells.Count>1 Then Selection.Merge ActiveSheet.Protect,AllowFormattingCells:=True End If 何かぬけているのかマクロを実行しても全く働いてくれません。 どうかよろしくです。

  • エクセル保護でのグループ化、フィルタの使用方法

    エクセル2007でセルの保護の状態でグループ化の表示切替とオートフィルタを使用する方法を教えてください。 現在ファイル内で特定の列に保護をかけています。 保護により無効となってしまったグループかの表示・非表示はVBAで 切替られるようにしました。 Private Sub Workbook_Open() With Worksheets("シート名") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub 更に、オートフィルタを使用したいのですが、 保護を行う時に「オートフィルタの使用」にチェックを入れているのに 選択が不可能な状態です。 すべての条件を満たすにはどのような方法があるのでしょうか。 お分かりになる方がいられましたらご教授ください。

  • エクセル:常に保護をかけるがマクロは有効

    シートに、マクロ実行時以外保護をかけておきたいです。 (マクロで、ロックをかけたセルを操作したいので) 「マクロを記録する」で保護をかける操作を記録してもらったところ、 「許可する操作」は以下の記述で実行されるようです。 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True ここに「マクロからの変更は有効」の UserInterfaceOnly:=True を加えた以下のコードは、 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True, UserInterfaceOnly:=True どのSubに記述すればよいでしょうか。 ワークシートに直接書込むんですよね? Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub に書いてみたら一時期正常に動いていたと思うのですが、どうやら勘違いだったみたいです。 ActiveもChangeも違うようなのですが(なぜかどちらも一時は動いたような…)。

  • 作業グループを設定した複数シートの保護につきまして

    タイトルの設定をエクセル2007で行っております。 ひとつのシートを設定した場合はできたのですが、 複数シートを選択しての設定ができません。 シートは下記の3つあります。 ・あ行 ・か行 ・集計 3つのシートの「あ行」と「か行」の2つのシートに、 保護をかけた状態でも作業グループの「+」「-」がいじれる設定にしたいです。 WEBで調べてやったのが、下記のマクロです。 Private Sub Workbook_Open() Sheets(Array("あ行", "か行")).Select.EnableOutlining = True Sheets(Array("あ行", "か行")).Select.Protect Password:="****", DrawingObjects:=True, _ contents:=True, UserInterfaceonly:=True End Sub どうにもうまくできません。 ご存じの方お教えくださいますでしょうか。 どうぞ、宜しくお願いいたします。

  • エクセルのマクロをブック全体に

    マクロに関してはずぶの素人です、Q&Aのサイトで目的にかなったものを見つけ 設定したら結果は満足するものでした。 「シートを保護した状態で、グループ化の表示・非表示を切り替えるマクロ」 Sub Auto_Open() With Worksheets("Sheet1") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub これをブック全体に反映できるマクロを教えて下さい。 ブック内のシート数は多いもので10シートほど、シート名は和英混合です。 ブックの数は40程有り全てのシートにマクロを設定するのは途方もなく 時間が掛かりそうで困っています。 当方のエクセルはExcel2007SP3です、宜しくお願いします。

  • Excel 2000にて特定のシート(シート名 1~30)セル保護をし

    Excel 2000にて特定のシート(シート名 1~30)セル保護をしていないデータ(結合セルを含む)を一括削除を行いたいのですが、サイトで見つけた物を使用してみたのですが、うまくいきませんでした。 よろしくお願いします。 Sub test2() ? Dim c As Range ? With ActiveSheet ??? .Unprotect ??? For Each c In .UsedRange ????? If Not (c.Locked) Then c.MergeArea.ClearContents ??? Next ??? .Protect UserInterfaceOnly:=True ? End With End Sub シートは40枚程あるのですが、削除したいのはシート1~30迄のデータです。 マクロのレベルは初級レベルです。 よろしくお願いします。

  • マクロのクリア設定がシートの保護を行うと機能しません

    マクロ、超初心者です。 どうにか、下記マクロを設定しました。 On Error Resume Next With ActiveSheet.Range("d:e").SpecialCells(xlCellTypeConstants, 23) .ClearContents End With シートの保護を行うと、上記マクロが機能しません。 ちなみに、セルの保護の状態は、 d列----「ロックなし」「表示する」 e列----「ロックなし」「表示しない」(数式が入っています) お暑いところ・お忙しいところ申し訳ありませんが、 どなたか、ご教授ください。 よろしくお願いいたします。

  • エクセル2003 シートを保護するとマクロエラー

    sub macro1()  worksheets("Sheet2").copy before:=worksheets(1)  with worksheets(1)   .range("D4:BH14").interior.colorindex = xlnone   .range("D16:BH21").interior.colorindex = xlnone   .printout  end with  application.displayalerts = false  worksheets(1).delete  application.displayalerts = true end sub 以前に、こちらの質問で回答をいただきました。 会社のプリンターは古すぎなのですが、 見事!なんとか、会社のプリンターでできました。 入力されたくないセルもあり、シートを保護しました。 すると、マクロにエラーがかかりました。 なるべく、触られたくないセルがあったり、データを入力してほしいデータもあり… セルの保護をかけながら、マクロを有効に動かしたく思います。 よろしくお願いします。

  • エクセル2010のシート保護マクロについて

    すべてのシートを保護してくれるマクロを教えてほしいのですが、機能として 「ロックされていないセル範囲の選択」と「セルの書式設定」の二つの機能を許可したものを教えてください。また、逆にすべてのシートの保護を解除するマクロもお願いします。 エクセル初心者のため、見当はずれなことを聞いていたら申し訳ありませんが、いくら探しても上記のようなものを探すことができず、、、。シートが80ほどあるもので、困り果てています。 よろしくお願いします。

  • Excelのシートの保護について

    Excelのシートの保護について教えてください。 シートのセルごとに保護をかけました。 セルの書式設定→保護→ロックのチェックをつけて ツール→保護→シートの保護 というふうにしました。 セルの書式設定の保護のロックのチェックを 外したところは入力ができるようになり、 ロックのチェックをつけて保護をしたところには 入力しようとすると「変更しようとしているセルまたは・・・」と メッセージが出るようになると思うのですが、 一部のセルだけ入力しようとすると上記のメッセージが出て、 OKをクリックしてもずっとメッセージが出続けて、 タスクマネージャで終了しないと作業できなくなってしまいます。 原因がわからず困っています。なにか設定が悪いのでしょうか? 教えてください。よろしくお願いします。

専門家に質問してみよう