【VBA】アクティブでないシート上のセル範囲に移動・選択する方法|Application.GoToの活用

Excel VBAでセル範囲を選択する処理を書く際に、「別シート上のセルへ移動・選択したい」というケースは少なくありません。
しかしながら、Range(...).Selectアクティブなシートにしか使用できないため、シートをまたいだ選択ではエラーになります。

この記事では、アクティブでないシート上のセルに確実に移動する方法として、Application.GoTo を活用する方法をご紹介いたします。


目次

NG例:直接の .Select は失敗する

Worksheets("入力シート").Range("C3:F12").Select  '← アクティブシートでないとエラー

このように、Worksheets("入力シート") がアクティブでない状態で .Select を使うと、実行時エラーが発生してしまいます。


正しい方法:Application.GoTo を使って移動する

Application.GoTo Worksheets("入力シート").Range("C3:F12")

解説:

  • Application.GoTo は、アクティブシートに関係なく任意のセルや範囲にフォーカスを移動できるメソッドです。
  • 上記のコードでは、“入力シート” の C3:F12 の範囲へジャンプして選択状態にします。
  • 自動的に対象のシートがアクティブになり、指定セル範囲が選択されます。

応用:選択後の処理を続ける

With Worksheets("入力シート")
    Application.GoTo .Range("C3:F12")
    .Range("C3:F12").Interior.Color = RGB(255, 255, 200)
End With
  • With ブロックを使うことで、指定範囲に対して色を塗ったり、値を操作したりといった後続処理も明確に記述可能です。

注意点と補足

内容説明
.Select は使わない選択対象のシートがアクティブでない場合、.Select はエラーになります。
.GoTo はフォーカスを移動できるApplication.GoTo を使えば、シートをまたいだセル移動が可能です。
オプション引数あり第2引数に Scroll:=True を指定すると、スクロール位置も制御可能です。

使用シーンの例

  • 特定のシート上の入力欄にジャンプさせる
  • エラーセルを別シート上に表示させて補足説明を行う
  • シート間で処理の起点を明示する

まとめ

処理内容コード例備考
シートをまたいでセルを選択Application.GoTo Worksheets("シート名").Range("セル範囲")安全にセルへ移動可能
.Select はNGWorksheets(...).Range(...).Selectアクティブなシートでのみ使用可能
処理の継続.Range(...).Value.Interior.Color などで装飾や値設定も可
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次