- ベストアンサー
エクセルでシートのグループ化を保護する方法
- エクセル2010でシートをグループ化して作業する際に、他の人が編集してもグループ化が外れない方法について教えてください。
- シートを「全シート」ではなく、選択してグループ化することで、他のシートに移動してもグループ化が外れないことが分かりました。空のシートを追加し、必要なシートを選択してからブックを保護し、空のダミーシートをクリックできないようにすることで、グループ化を保護することができます。
- ダミーシートの非表示ではグループ化を保護することはできないため、上記の方法を試してみてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>表示されるメッセージは >コンパイルエラー: >「Sub 又はFunctionが定義されていません」 スペルミスやコードの保存場所などを再確認してください。 >ちなみにブックは10ファイルほどあり、 >それぞれシート数が違っているのですが、 >If .Sheets.Count <> 5 Then Exit Sub >の5だけ変更すれば対応できますでしょうか? はい、そうです。 必ず、ブックごとのシート数と 課題コード上の数値を一致させ鵜必要があります。
その他の回答 (1)
- HohoPapa
- ベストアンサー率65% (455/693)
例えば、シート総数が5枚ある。 2枚目を選択した場合、 2枚目が一番手前に表示され、 かつ、5枚全数がグループ化している。 4枚目を選択した場合、 4枚目が一番手前に表示され、 かつ、5枚全数がグループ化している。 こんな挙動を期待しているものと思います。 それは、 標準モジュールと、5枚あるシートモジュールのそれぞれに 次のマクロを配置することで実現できます。 なお、 グループ化したくない場合もあるでしょうから シート総数が5枚の場合にのみ動作するようにしました。 グループ化を一時的に無効にする場合は 適当な場所にシートを追加してください。 むろん、この追加したシートを削除すれば 再びグループ化が有効になります。 '//---シートモジュールのそれぞれに配置するコード Private Sub Worksheet_Activate() SetGr End Sub '//--標準モジュールに配置するコード '//------------------------------------------------------------------ '// シート総数が5枚ならシート全数をグループ化 '//------------------------------------------------------------------ Sub SetGr() Dim shCounter As Integer Dim SelSheetNum As Integer With ThisWorkbook 'シートの数が5枚以外なら抜ける If .Sheets.Count <> 5 Then Exit Sub SelSheetNum = .ActiveSheet.Index .Sheets(SelSheetNum).Select For shCounter = 1 To .Sheets.Count 'グループ化 If shCounter <> SelSheetNum Then .Sheets(shCounter).Select Replace:=False End If Next shCounter End With End Sub
補足
早々の度重なるご回答に感謝!感謝!! で、早々に試してみましたが、残念ながら(とううより当方の場合いつものように)エラーが出てしまいました。 エラーの出るタイミングは、5枚のシートをグループ化して、他のシートに移動しようとすると下記のエラーメッセージが出ます。 WorkSheetのActivateの Private Sub ・・・の行が黄色くなり 表示されるメッセージは コンパイルエラー: 「Sub 又はFunctionが定義されていません」 ちなみにブックは10ファイルほどあり、それぞれシート数が違っているのですが、 If .Sheets.Count <> 5 Then Exit Sub の5だけ変更すれば対応できますでしょうか? 恐縮ですが宜しくお願い致します。
お礼
色々試行錯誤で何とかうまくいきました! 何あ違っていたのかとりあえず使えるようになったのでまずはこれで使い始めます。 本当に色々ありがとう誤字材ました。