こんにちは、Ryoです。
表示画面(アクティブウィンドウ)内で特定の表などをピックアップしたい場合、ScrollRow/ScrollColumnプロパティを利用することで左上端に表示される行番号や列番号を設定することで対応できますので、今回はその内容について書いていきます。
1.サンプル概要
セルE10が左上端となる表をサンプルとして準備しています。このサンプルに対してセルE10の位置を画面左上端となるように処理していきます。
ScrollRow/ScrollColumnプロパティを利用して設定することで下の画像に示す通り、セルE10を画面左上端に表示しています。
ScrollRow/ScrollColumnプロパティは左端に表示されている行番号と列番号を取得することもできますので、上のセルE10を左上端としている状態で値を取得し、メッセージボックス表示させると以下のようになります。
行番号は問題ありませんが、列番号については数値の場合判り難いこともありますので、Split関数を併せて利用することでアルファベット表示にすることも可能です。
以上がサンプル概要になります。
2.サンプルコード
◆左端表示する行番号/列番号の設定
Sub sample1() 'アクティブウィンドウに対する処理 With ActiveWindow 'セルE10の行番号を指定 .ScrollRow = Range("E10").Row 'セルE10の列番号を指定 .ScrollColumn = Range("E10").Column End With End Sub
目的のセルを画面左上端に表示するにはScrollRow/ScrollColumnプロパティを利用します。
オブジェクト.ScrollRow/ScrollColumn = expression
ScrollRowプロパティはウインドウ内で左端に表示される行番号、ScrollColumnプロパティは列番号を取得・設定するプロパティです。これらのプロパティを組み合わせて利用することで指定セルを画面左上端に表示させることができます。
同じようにセルA1を指定することで初期状態(リセット)できます。
Sub Sample2() '※ セルA1を指定することでリセットする 'アクティブウィンドウに対する処理 With ActiveWindow 'セルA1の行番号を指定 .ScrollRow = Range("A1").Row 'セルA1の列番号を指定 .ScrollColumn = Range("A1").Column End With End Sub
◆表示画面左端の行番号/列番号を取得
ScrollRow/ScrollColumnプロパティは値の取得も可能です。下のサンプルコードを実行すると現在画面に表示されている先頭行と列番号を表示します。
Sub Sample3() 'アクティブウィンドウに対する処理 With ActiveWindow '現画面表示の先頭行・列番号を取得し表示する MsgBox "先頭行: " & .ScrollRow & vbLf & _ "先頭列: " & .ScrollColumn End With End Sub
上のSample3では列番号が数値表示となり判り難くなるケースも発生(例:Z以降のAXやRBなど)しますので、Split関数を利用してアルファベットに変換することも可能です。このような処理も用途によっては有用なのでご参考までに。
Sub Sample4() '※参考 ' 現画面表示の先頭行・列番号を取得した際に、 ' 列番号を数値⇒アルファベットに変換して表示する Dim c As Variant 'アクティブウィンドウに対する処理 With ActiveWindow 'Split関数を利用して取得したセルアドレスから '$で区切ることでアルファベット部分を取得する c = Split(Cells(.ScrollRow, .ScrollColumn) _ .Address(True, False), "$")(0) 'メッセージボックス表示 MsgBox "先頭行: " & .ScrollRow & vbLf & _ "先頭列: " & c End With End Sub
3.まとめ
今回扱ったScrollRow/ScrollColumnプロパティはウィンドウ制御として役に立つ場面も多いのではないかと思います。
実用途で考えれば左上端として表示したいセルを設定することで、アクティブウィンドウ内の表などをピックアップしたり切り替えたりすることが多いので値を取得して活用するような場面は少ないのですが、できることを知っておくと何かの機会に役に立つこともあるプロパティだと思います。
以上、表示画面の上端行/左端列を取得・設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo