和風スパゲティのレシピ

日本語でコーディングするExcelVBA

ワークシートをスクロールする - ScrollRow/Column

ワークシートをスクロールする方法を解説します。

  • 指定した行/列が左上にくるようにスクロールする
  • 現在の表示セルを基準に1セル分スクロールする
  • 現在の表示セルを基準に1ページ分スクロールする

の3つの方法があります。

指定した行/列が左上にくるようにスクロールする

行番号、列番号を指定してスクロールしたい場合は、
ScrollRow/ScrollColumnプロパティを使用します。

' 100行目までスクロール
ActiveWindow.ScrollRow = 100

' 5列目までスクロール
ActiveWindow.ScrollColumn = 5

' H10セルが左上にくるようにスクロール
ActiveWindow.ScrollRow = Range("H10").Row
ActiveWindow.ScrollColumn = Range("H10").Column

 
名前は動詞っぽいですがメソッドではなくプロパティであり、
サンプルコードの通り「代入」する必要がある点にご注意ください。

以下のコードは「プロパティの使い方が不正です」エラーになります。

ActiveWindow.ScrollRow 100

 

プロパティということで、現在何行目が表示されているかを見ることもできます。

Debug.Print ActiveWindow.ScrollRow ' ←今の表示行を取得できます。

 

ちなみにウィンドウ枠の固定中は、
固定されたセル範囲を除いた左上を設定/取得できます。

直観的な仕様ですので、気にせずに使用してください。

現在の表示セルを基準にスクロールする

現在の表示状態を基準にスクロールする場合は、
LargeScroll/SmallScrollメソッドを使用します。

  • LargeScrollは1画面分
  • SmallScrollは1セル分

の表示を移動することができます。

' 1セル分上下左右へ移動
ActiveWindow.SmallScroll Up:=1
ActiveWindow.SmallScroll Down:=1
ActiveWindow.SmallScroll ToLeft:=1
ActiveWindow.SmallScroll ToRight:=1

' 1画面分上下左右へ移動
ActiveWindow.LargeScroll Up:=1
ActiveWindow.LargeScroll Down:=1
ActiveWindow.LargeScroll ToLeft:=1
ActiveWindow.LargeScroll ToRight:=1

 

このメソッド、面白いのが「マイナスを指定することも可能」な点で、
以下のコードはどちらも同じ「左下へ1つずつ移動」を行います。

ActiveWindow.LargeScroll Down:=1, ToLeft:=1
ActiveWindow.LargeScroll Up:=-1, ToRight:=-1

 
普通に指定する分にはプラスで統一すればいいと思いますが、
同じ変数で上下両方の動きを制御するなども可能なので覚えておいて下さい。


本コードは数値さえ渡していればエラーにはならず、
シートの端まで言っている場合は特に何も起きません。


ワークシートの表示領域をスクロールしたい場合は、
以上いずれかのコードを使用してください。