VBAで指定したシートに移動・選択・ジャンプする

シートの操作 シートの操作
スポンサーリンク

コマンドボタンを押したら一瞬で指定したシートに表示が切り替わり、指定したセルを表示したい時ありませんか?

使用頻度が高いVBAコードなので覚えておくと便利です。

スポンサーリンク

言い換えるとセルの瞬間移動

エクセルで使用しているシートが1つではなく複数使用していて、シート間でセルの移動や表示を切り替える事が多くなります。

その時にワークシート内に配置したコマンドボタンを押せば、指定したシートやセルに表示が切り替わる(セルが移動する)ようにします。

ここでは、ユーザーフォームに配置したコマンドボタンに、「シート1」から「シート2」に瞬間移動するVBAコードです。

シート瞬間移動のVBAコード

Private Sub CommandButton1_Click()
Sheets(“シート2”).Select
End Sub

解説
  1. コマンドボタン1が押されたら
  2. シート2を選択する
  3. マクロ終了

これで、シート1が表示されていたのですが、コマンドボタンを押すことによってシート2に移動しました。

もちろん現在表示中のシートがどのシートであれ、同様にシート2に瞬間移動します。

ただし、このままだとシート自体は希望通りに瞬間移動したのですが、セルの位置は指定していないので、必ずしもセルA1が左上端にあるわけではありません。

前回表示したセルの位置になってしまうので、とんでもない位置が表示される場合があります。

セルの位置もシートと一緒に指定する

どうせシートの瞬間移動をするならば、表示するセルの位置も常時同じの方がいいに決まっていますので、一緒に指定することをおススメします。

ここでは左上端に「セルA101」になるように指定します。

セルも一緒に指定したシート瞬間移動のVBAコード

Private Sub CommandButton1_Click()
Sheets(“シート2”).Select
With ActiveWindow
.ScrollRow = 101
.ScrollColumn = 1
End With
End Sub

解説
  1. コマンドボタン1が押されたら
  2. シート2を選択する
  3. 今表示されているエクセルシートを操作する
  4. 101行目にスクロール(移動)する
  5. 1列目にスクロール(移動)する
  6. 操作終了
  7. マクロ終了

なぜ、「Range(“A101”).Select」を使わないの?って思いませんでしたか?

もちろんセルA101を指定していないので、表示されてもセルは移動していませんので画面だけが移動しています。

もし「Range(“A101”).Select」を使ってしまうと、表示された画面の左上端にセルA101ではないので、一般的には使いません。

とりっぷぼうる
とりっぷぼうる

これでシートの瞬間移動ができるようになりましたね。