コマンドボタンを押したら指定したシートやセルに移動・ジャンプするVBA

セルの移動

エクセルの1つのシートを広く使ったり複数のシートを使うと、いちいち移動してセルを指定するのはとても面倒だと思いませんか?

そんな時はエクセル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ではないので、一般的には使いません。