【VBA】別のセルにジャンプしたあと元のセルに戻る方法|Application.GoToで簡単制御

VBAでセルの検索やジャンプ処理を行う際に、「いったん他のシートやセルに移動して、作業が終わったら元の場所に戻りたい」という場面は多くあります。
たとえば、入力値に対応する情報を別シートで探して表示し、その後入力位置に戻って編集を続けたい、というような用途です。

この記事では、VBAの Application.GoTo を利用して、一時的に他セルへジャンプし、処理後に元の位置へ戻る方法をご紹介いたします。


目次

基本コード:元の位置を記録し、ジャンプ後に戻る

Sub JumpAndReturn()
    Dim originCell As Range
    Dim matchedCell As Range
    
    ' 元のセルを記録
    Set originCell = ActiveCell

    ' 「商品」シートのC列で、元のセルの値を検索
    Set matchedCell = Worksheets("商品").Columns("C").Find(What:=originCell.Value)

    If Not matchedCell Is Nothing Then
        ' 見つかったセルへジャンプ
        Application.GoTo matchedCell

        ' 任意の処理(例:メッセージ表示)
        MsgBox "該当データ:" & matchedCell.Offset(0, 1).Value

        ' 元のセルに戻る
        Application.GoTo originCell
    Else
        MsgBox "一致するデータが見つかりませんでした。"
    End If
End Sub

コードのポイント

処理内容
Set originCell = ActiveCell現在選択されているセルを記録しておきます。
Find 関数検索対象のシート(例:「商品」)で、特定の列から一致する値を探します。
Application.GoTo matchedCell見つかったセルに一時的にジャンプします。
Application.GoTo originCell元のセルに戻ります。

応用:シートをまたいで戻ることも可能

この方法はシートをまたぐ移動にも対応しており、以下のような用途に役立ちます。

  • 入力セルに応じてマスタシートを検索
  • 顧客IDに紐づく詳細情報を別シートで参照
  • 検索結果を確認後、自動的に元の入力欄へ復帰

注意点と補足

項目内容
ActiveCell の保存は必須移動前に必ず現在位置を記録してください。
.Find の対象範囲に注意列指定で範囲を絞ると処理が早くなります(例:Columns("C"))。
一致しない場合の処理If Not matchedCell Is Nothing Then で適切に分岐を設けてください。

使用シーンの例

  • 入力値に対応するマスタデータの参照と復帰
  • エラー発生位置から対応情報へ移動し、修正後に元に戻る
  • ジャンプ処理付きナビゲーションボタンの実装

まとめ

操作方法
元のセルを記録Set originCell = ActiveCell
別セルへジャンプApplication.GoTo matchedCell
元に戻るApplication.GoTo originCell
シートをまたぐ対応どのシートでも有効(範囲は明示的に指定)

このように、Application.GoTo を使えば、一時的なジャンプと元位置への復帰を簡単に実現できます。
マスタ検索や確認処理の流れをスムーズにし、作業効率を高めたい場面で非常に有用です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次