
エクセルVBAで表以外の場所へ移動させない方法

表の中は見ても触ってもいいけど、その他は触らないで!って思うことありませんか?
エクセルファイルを共有して使うと、様々な計算式など見られるぐらいなら構わないのですが、誤って消されてしまったりしたら大変なことになりますよね。

指定したセル以外はクリック不可・スクロールも制限しちゃおう!
操作可能範囲を指定する
ScrollAreaプロパティを使うと、指定したセルの範囲以外への画面をスクロールして移動することも、セルを選択することも一切できなくなります。
ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書いた例です。
セルの操作可能範囲を指定する
Private Sub CommandButton1_Click()
ActiveSheet.ScrollArea = (“A1:D15”)
End Sub
- コマンドボタン1が押されたら
- 表示中のシートでの操作可能範囲はセルA1:D15とする
- マクロ終了
このようにVBAコードを書くと、セルA1~D15の範囲内はセルの選択・操作が可能ですが、それ以外にはスクロール移動もセルを選択することもできなくすることができます。
セル操作の可能範囲指定を解除する
指定するからには、解除ができないと困りますよね。
Private Sub CommandButton1_Click()
ActiveSheet.ScrollArea = “”
End Sub
- コマンドボタン1が押されたら
- 表示中のシートでセル操作可能範囲は空欄とする
- マクロ終了
先ほどと違いセルの範囲が「””」(空欄)とすることで指定されていないという事になり、解除されます。
指定した範囲の操作制限・解除する
今度は、コマンドボタン1つに「指定したシートのセル範囲外を選択を制限・解除する」VBAコードを書くことにより、スイッチのオン・オフのような操作ができるようにします。
Private Sub CommandButton1_Click()
If ActiveSheet.ScrollArea = “” Then
ActiveSheet.ScrollArea = Range(“A1”).CurrentRegion.Address
Else
ActiveSheet.ScrollArea = “”
End If
End Sub
- コマンドボタン1が押されたら
- もし表示中のシートにセルの範囲が指定されていない場合
- セルA1を含む領域の範囲をセル操作可能範囲とする
- そうでなかったら(セルの範囲が指定されていたら)
- 表示中のシートのセルの指定範囲を解除する
- Ifステートメント終了
- マクロ終了
これで、セルの操作可能範囲を指定したり解除したりできるようになりました。