VBAでシートのスクロール範囲を指定する

Worksheet.ScrollAreaプロパティ

スクロールが可能なセル範囲を指定するにはWorksheetオブジェクトのScrollAreaプロパティを利用します。

入力できるセルの制限をしたり画面のスクロールを止めたい場合に利用します。

設定はシート単位で行います。

設定後は指定範囲を超えるスクロールは出来なくなります。

Excelで同じことを行う機能はありませんが、ウインドウ枠の固定、不要な列の非表示、スクロールバー非表示、という手順で似たようなことは可能です。

構文

親オブジェクト 親オブジェクトにはWorksheetオブジェクトを指定します。
取得値 スクロール可能範囲をRangeオブジェクトのAddressプロパティの形式(例「$A$3:$G$50」)で返します。

スクロール可能範囲が未設定の場合は空文字列(“”)が返されます。

設定値 スクロール可能範囲をA1形式を文字列で指定します。

Rangeオブジェクトのセル範囲を指定したい場合はAddressプロパティをそのまま渡すことで設定できます。

単一セルの場合は”A1″のように指定します。範囲セルの場合は”A1:G50″のように指定します。

“”を指定するとスクロール範囲を解除します。

スクロール範囲の制限を解除するには

上の表にも書いていますが、スクロール範囲の制限を解除するには、ScrollAreaプロパティに空文字列を設定します。

以下はアクティブシートのスクロール範囲の制限を解除するコードです。

入力セル範囲をスクロール範囲に制限するには

入力されているセル範囲だけをスクロールできるように制限するには、ScrollAreaプロパティに設定する値にその入力セル範囲のRangeオブジェクトのAddressプロパティを渡します。

入力セル範囲を指定するにはUsedRangeプロパティやCurrentRegionプロパティなどがありますが、UsedRangeプロパティが一番使い勝手がいいと思います。

入力セル範囲の指定方法については「VBAで編集セル範囲の選択と最終行と最終列の取得」をご参照ください。

サンプルコード

アクティブシートのA3セルからG50セルの範囲にスクロールを制限するサンプルです。

スクロールの制限を行っていることを明示する

私自身はスクロールの制限がかけられているシートをほとんど見たことがありません。

そのため、制限が掛けられていると「Scroll Lockキー押しちゃってる?? あれ、違うな、んん???」と少し考えてしまうと思います。

Excel初心者のために入力できる範囲をわかりやすくする目的などでScrollAreaプロパティを利用していることもあるとは思いますが、初心者でない人にもスクロールの制限はあまり見慣れた機能ではありません。

どうしてもスクロールの制限をする場合は、スクロールの制限をしていることを明示することを検討してください。

スクロール制限が利用者への親切であったとしても、それを明示することも利用者への親切になります。

そして、ご自身が「なんなんだこれ?」「使いにくいからやめて」などと苦情を言われることの回避にもつながります。

関連記事

サブコンテンツ

このページの先頭へ