特定のセルが見えるようにスクロールする(Gotoメソッド)|Excel VBA |
1画面に収まらないほどたくさんのデータがあるとします。
このワークシートから特定のデータを検索してそのセルを選択するには、いろいろな方法がありますが、For...Nextステートメントを使う場合は次のようにします。
Sub Sample1()
Dim i As Long
For i = 1 To 1000
If Cells(i, 1).Value = "もうぐ 太郎" Then
Cells(i, 1).Activate
Exit For
End If
Next i
End Sub
このマクロを実行するとき、現在表示されている画面に "もうぐ 太郎" が見えていたらアクティブセルがそこに移動します。
現在表示されている画面になかった場合は、検索されたセルが画面の中心あたりに表示されるように、画面がスクロールします。
これは、Findメソッドを使った検索でも同じです。
では、見つかったセルを、画面の左上に表示するにはどうしたらいいでしょう。
これには、ApplicationオブジェクトのGotoメソッドを使います。
Sub Sample2()
Dim i As Long
For i = 1 To 1000
If Cells(i, 1) = "もうぐ 太郎" Then
Application.Goto Cells(i, 1), True
Exit For
End If
Next i
End Sub
Gotoメソッドをワークシート上で使うとアクティブセルが移動しますが、このとき、2番目の引数「Scroll」にTrueを指定すると、そのセルが画面の左上(ウィンドウ枠の固定が設定されている場合は、見出し行のすぐ下)になるように自動的にスクロールします。