VBA Gotoメソッドで指定したセルにジャンプします

 今回は市販の参考書によっては完全に無視されてしまうこともある Gotoメソッド について解説します。Gotoメソッドは 指定したセル範囲を選択する という機能をもちます。んん? 誰ですか?
「だったら、Selectメソッドを使えばいいじゃん」
「こんなマイナーなメソッド、別にいらないじゃん」
とか言ってる人は~? まあ実のところ、こばとも最初はそう思っちゃいました。でも、よくよく調べてみると、Selectメソッドとは少し違った機能があることがわかったのです。目的によっては、Goto を使ったほうが良い場合もあるのです。

Gotoメソッドで指定したセル範囲にジャンプします

 Gotoメソッドは Applicationオブジェクトのメソッド です。
 このメソッドを使うときは

Application.Goto セル範囲 [,スクロール]

という形式で記述します。オプション引数 [スクロール] を指定するときは、True もしくは False です(省略すると False です)。さっそく簡単なマクロで試してみましう。

 'セル E10 にジャンプ♪

 Sub GotoRange1()

  Application.Goto Range("E10")

 End Sub

 実行すると、セル E10 が選択されます。

 VBA Gotoメソッドを使ったプログラム① 指定セルに移動

 まあ、これだけなら Select メソッドと大差ないのですが、注目すべきは Gotoメソッドのオプション引数 [スクロール] です。この引数を True にしてみましょう。

 'セル E10 にジャンプ&スクロール♪

 Sub GotoRange2()

  Application.Goto Range("E10"), True

 End Sub

 このプロシージャを実行すると ......

 VBA Gotoメソッドを使ったプログラム② 指定セルが左上端にスクロール

 じゃじゃ~ん♪ セル E10 が左上隅に表示されました♪

 Gotoメソッドは移動先のセルが左上端に表示されるように自動的にスクロールされるのです。これは Selectメソッドにはなかった Goto ならではのスペシャルな機能なのです。しかし違いはこれだけではありません。別のシートのセルを選択するときの記述の仕方に、ちょっとした違いがあるのです。
 

Gotoメソッドで別のシートのセルへ移動します

 今度は現在アクティブになっていないシートへ移動することを考えてみます。
 まず最初に Select メソッドを使ってみます。
 Select でよくやる間違いは次のようなコードです。

 'このマクロは機能しません

 Sub SelectRangeTest()

  Worksheets("Sheet2").Range("E10").Select

 End Sub

 まったく正しいコードに見えますが、このマクロは動きません。
 Selectメソッドを使うなら、2行使って書く必要があります。

 Sub SelectRange()

  Worksheets("Sheet2").Select

  Range("E10").Select

 End Sub

 ところが Gotoメソッドを使うと、これが1行ですむのです:

 'Sheet2 のセル E10 にジャンプ♪

 Sub GotoRange3()

  Application.Goto Worksheets("Sheet2").Range("E10")

 End Sub

 たかが1行、されど1行です。
 1行を笑う者は、1行に泣くのです。
 おおっと。良いこと言いましたね~。
 久しぶりにこばとの名言が出ましたね~。
 自分で言って、自分で感心しちゃった。メモしておこうっと ......
 な、何ですか? その呆れかえった表情は?
 まあとにかく、今回はこれでおしまいです。

 ≫ 次回記事が入るまで過去記事を読んで待っててね~♪

Google広告
スポンサーリンク
スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください