画面の左上のセルを移動しても常に表示する方法

Excel-VBA画面の操作
波乗りアヒル
波乗りアヒル

コマンドボタンでセルの移動をしたらヘンな位置で表示されたことありませんか?

表示画面の左上のセルを指定したつもりなのに・・・

Excel-VBAを使う方はひとつのシートをちょっとだけ使うのではなく、かなり広範囲を使う方が多いはずです。

そうなるとジャンプしたセルが常に画面左上になる事を前提に、ジャンプさせてますよね。

波乗りアヒル
波乗りアヒル

それを解決する方法は、コマンドボタンにセル番号だけではなく、移動するセルの数も入れてあげれば解決しますよ

スポンサーリンク


スポンサーリンク

ScrollRowとScrollColumnを付け加える

Excel-VBAを使う前までは、セルの移動といえばスクロールバーをマウスで操作するので、おおよそ表示画面の範囲内のセルを使用するのが一般的ですね。

Excel-VBAでコマンドボタンを使えば、セルの移動も一発でジャンプしてくれるのでひとつのシートを広範囲で使うことが容易になりますね。

波乗りアヒル
波乗りアヒル

セル列番号A~ZどころかA~EZまで使うことも頻繁にあります。

VBA覚えたての頃、こんな失敗しませんでしたか?

コマンドボタンを押すとセルBH100へジャンプさせるのに、こんなVBAコードで済ませてしまいました。

Private Sub CommandButton1_Click()
Range(“BH100”).Select
End Sub

だいたい画面中央になることが多いのですね。

セル番号だけのジャンプ

セル番号だけでは画面左上には表示されない

画面の左上(セルA1)の位置に表示させたつもりなんだけど失敗!

確かにセルBH100を選択されていますが、それ以上のVBAコードがないので画面左上を選択するなんて無理ですよね。

波乗りアヒル
波乗りアヒル

行番号と列番号を付け加えれば解決します!

エクセル覚えたての頃に書いた単純なVBAコードですが、長年問題なく使っていました。

Private Sub CommandButton1_Click()
シート名 = “sheet2”
Worksheets(シート名).Activate
Range(“A1”).Select
行番号 = 100
ActiveWindow.ScrollRow = 行番号
列番号 = 60
ActiveWindow.ScrollColumn = 列番号
Sheets(“sheet2”).Select
Range(“BH100”).Select
End Sub
  1. コマンドボタン1を押したら
  2. シートはsheet2を選ぶ
  3. セルA1を選ぶ
  4. 100行移動する
  5. 60列移動する
  6. sheet2を選択する
  7. セルBH100を選択する
  8. マクロ終了
このVBAコードでエクセル2007を使っている時は、なんの問題もなかったのですがエクセル2010以降は使えなくなった。

コンバイルエラー

エクセル2010ではエラー表示が出ました。

エラーになる原因っぽい日本語表記

シート名 = “sheet2”
Worksheets(シート名).Activate
Range(“A1”).Select
行番号 = 100
ActiveWindow.ScrollRow = 行番号
列番号 = 60
ActiveWindow.ScrollColumn = 列番号

波乗りアヒル
波乗りアヒル

エクセルのバージョンが違うと使えないなんて…

当時苦労しました。

ただ、どのように変更していいかわからなかったのですが、通常日本語使うときは「”日本語”」ってコード書いているのに、ここでは””がないからと思って、日本語の部分に””つけてみましたがダメでした。

それならばと、日本語表記しない方法でトライしてみたら、見事動きました!

下記のように日本語表記をしないコードです。

Private Sub CommandButton1_Click()
Sheets(“sheet2”).Select
Range(“A1”).Select
With ActiveWindow
.ScrollRow = 100
.ScrollColumn = 60
End With
Sheets(“sheet2”).Select
Range(“BH100”).Select
End Sub

これでシート移動やセル移動で必ず画面左上に表示させる事が、エクセル2007以前もエクセル2010以降も問題なく動いてくれますよ。

波乗りアヒル
波乗りアヒル

もちろんエクセル2016でも順調に動いていますよ。

波乗りアヒル
波乗りアヒル

ご覧いただきありがとうございます。

ブログランキングに登録しています。

少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。


Microsoft Officeランキング

ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

タイトルとURLをコピーしました