• 締切済み

EXCEL VBA でEnableSelection = xlUnlockedCellsについて

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

みんなの回答

noname#34921
noname#34921
回答No.5

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

  • ta123
  • ベストアンサー率51% (95/186)
回答No.4

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

error123
質問者

お礼

ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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

error123
質問者

補足

> セル範囲を保護して、その後そのセル範囲を選択して、次に何をさせたい(何なら許す、何は禁止する)ですか? 編集ができなければいいんです。コピーできてもかまいません。 実は、ある表なのですが、クリックしたセルの価をSelectionChangeイベントで取得して利用しようと思っています。 それで対象となる部分だけを選択可能にしたいのです。

  • ta123
  • ベストアンサー率51% (95/186)
回答No.2

十分読まずに失礼しました。 ご希望の機能はないと思います。代替案として (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

error123
質問者

お礼

ありがとうございました。 なるほどこういう手もありますね。 ただ、これだとマクロを無効にして開くと変更できちゃいますよね?

  • ta123
  • ベストアンサー率51% (95/186)
回答No.1

それらのセルのロックを解除してください。 Range("A1:C10").Locked = False 通常の操作手順ですと、セルの書式設定の保護タブにある「ロック」のチェックを外します。

error123
質問者

補足

ごめんなさい。わたしの書き方が悪いのかしら。 やりたいことはシートはロックした状態で 1.A1:C10のセルを編集はさせず、選択だけ可能にする。 2.それ以外のセルは編集はもちろんのこと選択もさせない。 と言うことなんです。 無理でしょうか? なお、スクロールロックは今回使用しません。

関連するQ&A

専門家に質問してみよう