プロが教える店舗&オフィスのセキュリティ対策術

ActiveSheet.EnableSelection = xlUnlockedCells

これで保護されていないセル以外の選択が不可能になるのはわかりました。
では、保護はするけれど、特定の範囲、例えばA1:C10だけは選択出来るようにしたい場合はどうすればいいのでしょうか?

A 回答 (5件)

「VBAを無効にしたら編集できてしまうのでは」という事ですが、保存する際のイベントをフックして、対象となるシートにパスワードを設定すればいいのではないでしょうか。



    • good
    • 0

No.2回答補足



ブックを何もできない状態(例えば、編集可能セルを無しにして、パスワード付きで保護しておく)で作っておき、Workbook_Open()で使える状態に変えるという方法はどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2004/11/19 08:58

>選択出来るようにしたい場合


セル範囲を保護して、その後そのセル範囲を選択して、次に何をさせたい(何なら許す、何は禁止する)ですか?
そのセル範囲をコピーするなどなら、保護しても出来てしまうが。

この回答への補足

> セル範囲を保護して、その後そのセル範囲を選択して、次に何をさせたい(何なら許す、何は禁止する)ですか?

編集ができなければいいんです。コピーできてもかまいません。
実は、ある表なのですが、クリックしたセルの価をSelectionChangeイベントで取得して利用しようと思っています。
それで対象となる部分だけを選択可能にしたいのです。

補足日時:2004/11/11 23:46
    • good
    • 0

十分読まずに失礼しました。


ご希望の機能はないと思います。代替案として
(1)選択可能なセルはロックを解除して、ActiveSheet.EnableSelection = xlUnlockedCells指定でシートの保護をする。
(2)ロック解除したセルの更新を無効にするVBAを当該シートに埋め込んでおく。

サンプルコーディング
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "変更できません"
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
なるほどこういう手もありますね。

ただ、これだとマクロを無効にして開くと変更できちゃいますよね?

お礼日時:2004/11/11 23:42

それらのセルのロックを解除してください。



Range("A1:C10").Locked = False

通常の操作手順ですと、セルの書式設定の保護タブにある「ロック」のチェックを外します。

この回答への補足

ごめんなさい。わたしの書き方が悪いのかしら。

やりたいことはシートはロックした状態で

1.A1:C10のセルを編集はさせず、選択だけ可能にする。
2.それ以外のセルは編集はもちろんのこと選択もさせない。

と言うことなんです。
無理でしょうか?
なお、スクロールロックは今回使用しません。

補足日時:2004/11/11 18:02
    • good
    • 0

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