Excelで作業をしていると、特定のセルを画面の左上にぴったり表示したいという場面があります。
たとえば、「データ一覧の途中行へ瞬時に移動し、そこを基点に作業したい」といったケースです。
そのようなときに便利なのが、VBAの ScrollRow
と ScrollColumn
プロパティです。
この2つを組み合わせることで、任意のセルをウィンドウ左上に移動表示することが可能です。
目次
基本コード:セルを画面左上に表示させる
Dim targetCell As Range
Set targetCell = Range("M30")
With ActiveWindow
.ScrollRow = targetCell.Row
.ScrollColumn = targetCell.Column
End With
コードの解説
行 | 内容 |
---|---|
Range("M30") | 左上に表示させたいセルを指定します。例では M30 セルです。 |
.ScrollRow = targetCell.Row | 指定セルの行番号を画面の最上部行に設定します。 |
.ScrollColumn = targetCell.Column | 指定セルの列番号を画面の最左列に設定します。 |
このコードを実行すると、M30セルがちょうど画面の左上隅に表示される状態になります。
応用例:セルを表示しつつ選択状態にもしたい場合
Dim baseCell As Range
Set baseCell = Range("H20")
With ActiveWindow
.ScrollRow = baseCell.Row
.ScrollColumn = baseCell.Column
End With
baseCell.Select
このようにすれば、指定したセルを左上に表示した上で、そのセルを選択状態にすることも可能です。
注意点と補足
項目 | 内容 |
---|---|
実行時に画面が移動する | スクロール操作が伴うため、ユーザーが作業中の場合は事前通知が望ましいです。 |
非表示セルには使えない | 指定したセルが非表示の場合、正しくスクロールされないことがあります。 |
フリーズウィンドウに注意 | ウィンドウ枠が固定されている場合、思った位置にスクロールされないことがあります。 |
使用シーンの例
- 入力フォームの特定欄へ自動誘導
- データ一覧の中間位置へジャンプ
- エラーセルを画面左上に移動して強調
まとめ
目的 | コード |
---|---|
セルを左上に表示 | .ScrollRow = Range.Row と .ScrollColumn = Range.Column |
表示+選択もしたい | .Select を追加する |
応用範囲 | 検索後のセル移動、入力欄誘導など |
このように、ScrollRow
と ScrollColumn
を使えば、ユーザーが注目すべきセルを画面上に明確に表示することができます。
とくにフォーム制御やデータレビューの場面では、視認性の向上や作業効率化に大いに役立ちます。