Worksheet.ScrollAreaプロパティ
スクロールが可能なセル範囲を指定するにはWorksheetオブジェクトのScrollAreaプロパティを利用します。
入力できるセルの制限をしたり画面のスクロールを止めたい場合に利用します。設定はシート単位で行います。設定後は指定範囲を超えるスクロールは出来なくなります。
Excelで同じことを行う機能はありませんが、ウインドウ枠の固定、不要な列の非表示、スクロールバー非表示、という手順で似たようなことは可能です。
構文
1 2 3 4 5 6 7 |
'// 取得 Worksheet.ScrollArea As String '// 設定 Worksheet.ScrollArea = A1形式でのスクロール可能範囲 Worksheet.ScrollArea = "A1" '// 単一セル Worksheet.ScrollArea = "A1:B2" '// 範囲セル Worksheet.ScrollArea = "" '// スクロール可能範囲の解除 |
親オブジェクト | 親オブジェクトにはWorksheetオブジェクトを指定します。 |
取得値 | スクロール可能範囲をRangeオブジェクトのAddressプロパティの形式(例「$A$3:$G$50」)で返します。
スクロール可能範囲が未設定の場合は空文字列(“”)が返されます。 |
設定値 | スクロール可能範囲をA1形式を文字列で指定します。
Rangeオブジェクトのセル範囲を指定したい場合はAddressプロパティをそのまま渡すことで設定できます。 単一セルの場合は”A1″のように指定します。範囲セルの場合は”A1:G50″のように指定します。 “”を指定するとスクロール範囲を解除します。 |
スクロール範囲の制限を解除するには
上の表にも書いていますが、スクロール範囲の制限を解除するには、ScrollAreaプロパティに空文字列を設定します。
以下はアクティブシートのスクロール範囲の制限を解除するコードです。
1 2 3 4 5 6 7 |
Sub ReleaseScrollArea() Dim sht As Worksheet Set sht = ActiveSheet sht.ScrollArea = "" End Sub |
入力セル範囲をスクロール範囲に制限するには
入力されているセル範囲だけをスクロールできるように制限するには、ScrollAreaプロパティに設定する値にその入力セル範囲のRangeオブジェクトのAddressプロパティを渡します。
入力セル範囲を指定するにはUsedRangeプロパティやCurrentRegionプロパティなどがありますが、UsedRangeプロパティが一番使い勝手がいいと思います。
1 2 3 |
Sub ScrollAreaUsedRange() ActiveSheet.ScrollArea = ActiveSheet.UsedRange.Address End Sub |
入力セル範囲の指定方法については「VBAで編集セル範囲の選択と最終行と最終列の取得」をご参照ください。
サンプルコード
アクティブシートのA3セルからG50セルの範囲にスクロールを制限するサンプルです。
1 2 3 4 5 6 7 8 9 10 |
Sub ScrollAreaTest() Dim sht As Worksheet Dim s Set sht = ActiveSheet sht.ScrollArea = "A3:G50" s = sht.ScrollArea Debug.Print s End Sub |
スクロールの制限を行っていることを明示する
私自身はスクロールの制限がかけられているシートをほとんど見たことがありません。
そのため、制限が掛けられていると「Scroll Lockキー押しちゃってる?? あれ、違うな、んん???」と少し考えてしまうと思います。
Excel初心者のために入力できる範囲をわかりやすくする目的などでScrollAreaプロパティを利用していることもあるとは思いますが、初心者でない人にもスクロールの制限はあまり見慣れた機能ではありません。
どうしてもスクロールの制限をする場合は、スクロールの制限をしていることを明示することを検討してください。
スクロール制限が利用者への親切であったとしても、それを明示することも利用者への親切になります。
そして、ご自身が「なんなんだこれ?」「使いにくいからやめて」などと苦情を言われることの回避にもつながります。