この人頭いいなと思ったエピソード

Excelシートの保護時にデータの並び替えを行いたいと考えています。
使用する予定のExcelは2003と2007です。

セルのデータを変更させたくないのでシートの保護を行うことになり、
その上でオートフィルタでの絞り込みや並び替えは使用したいという状況です。

Excelシートを保護する時のオプションで、次の4つにチェックをしました。
・ロックされたセル範囲の選択
・ロックされていないセル範囲の選択
・並べ替え
・オートフィルタの使用

オートフィルタの絞り込み表示は使用できましたが、並び替え時に保護の警告が表示されます。
シート上のセル全てのロックを解除して上記を行うと並び替えは出来るのですが、
データが変更できてしまうので意味がありません。

VBAでは制御可能という場合、マクロを無効にして起動された場合には
並び替えやオートフィルタが使用できなくなるので、出来るだけ避けたいと思います。

(できればVBAでの制御を行わずに、)
実現可能なのでしょうか?
教えて下さい。お願い致します。

A 回答 (1件)

オートフィルタは使えるので問題は並べ替えだけです。


しかし保護されたセル範囲を並べ替える事はできません。なので実現は不可能です。

#シート保護時に「並べ替え」のチェックを入れなければ,そもそも並べ替えはできません
#チェックを入れても,保護されたセルを並べ替える事はできません
#保護されたシートで,保護されていないセル範囲だけが並べ替えできます。



ヤリタイ事の全てを実現したければ,マクロを併用し,有効にしないで開いたのでは何も出来ないよう仕込んでおくぐらいと思います。

作成例:
ThisWorkbookのシートに


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Sheet1").Protect Password:=123
ThisWorkbook.Save
End Sub

Private Sub Workbook_Open()
Worksheets("Sheet1").Unprotect Password:=123
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub

などのように仕込み,さらにパスワードを見られないようにVBAProjectのプロパティで表示を保護しておくなどで。




#マクロからの操作は有効でシートを保護し,並べ替えだけマクロで行わせるような手もありますが,フツーの操作では出来ないという事なのでかえって使いにくいと考えます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
やっぱりそうですよね・・・了解しました。

お礼日時:2011/08/09 15:56

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A