VBA スクロールして一番上(左上)へ移動する方法

VBAでスクロールして一番上(左上)へ移動する方法です。

ブックを開いたときに先頭行に移動させたい、などの要望は多いと思います。

今回は VBAでスクロール位置を一番上(左上)に移動する方法と指定の位置に移動する方法 を紹介します。


サンプルソース

指定の位置へ移動するには ScrollColumnScrollRow を使用します。

Sub Macro1()
  ActiveWindow.ScrollColumn = 1
  ActiveWindow.ScrollRow = 1
End Sub

それぞれ 1 を指定していますので 列1・行1(A1) へ移動するということになります。

それでは AA30 から移動してみましょう。

VBA AA30からA1へスクロール

この場合 A1 が選択状態になるわけではありません。カーソルは AA30 のままです。

移動してセルを選択状態にしたい場合は

ActiveWindow.ActiveSheet.Range("A1").Select

などでセル位置を移動する必要があります。

ScrollColumn/ScrollRow を使う他に Application.Goto メソッドを使う方法があります。

Application.Goto Reference:=ActiveWindow.ActiveSheet.Range("A1"), Scroll:=True

パラメーター

各種パラメーターの説明です。

名前必須データ型説明
Reference省略可Variant移動先を指定します。Range オブジェクト、R1C1 形式のセル参照文字列、および Visual Basic のプロシージャ名を表す文字列です。この引数を省略すると、移動先は、直前に Goto メソッドを使ったときのセル範囲になります。
Scroll省略可Variant移動先セル範囲の左上端がウィンドウの左上端に表示されるようにウィンドウをスクロールするには、True を指定します。ウィンドウをスクロールしないようにするには、False を指定します。既定値は False です。

ScrollColumn/ScrollRow でも Application.Goto でも、指定したセルが画面左上になるように移動します。例えば C4 を指定したとすると、下図のようになります。

VBA スクロール 指定したセルが左端になる

ScrollColumn/ScrollRow ではセルが選択状態になりませんでしたが Application.Goto ではセルが選択状態になります。個人的によく利用するのは Application.Goto ですね。1行記述で済むのがいいです。

実務で利用する際は、用途に合わせて使い分けましょう。

参考サイト

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。