指定位置(セル)に瞬間移動する方法
エクセルで「列がAAAで行が30000のセルを、表示して下さい」と言われたら、何秒以内に表示できるでしょうか?私がやってみたところ・・・・・・A1セルを表示した状態から、通常のスクロールのみで1分以上かかりました。
時間がかかることと、動く数字やアルファベットを目で追うのは、ストレスや眼精疲労の原因になります。
私はストレスや眼精疲労がこの世で一番嫌いです(@_@;)
なので、今回は指定位置(セル)に瞬間移動する方法を紹介しましょう。
標準機能で瞬間移動する
これはとてもカンタンです。
F5キーを押して表示されたボックスに、瞬間移動したい位置を入力してOKします。(A1形式で入力します)
一度移動した所へは、履歴から選んで瞬間移動することもできます。
ただし、エクセルを閉じると履歴はリセットされます。
この標準機能での瞬間移動は、指定位置(セル)を表示し、かつ選択状態にします。
マクロで瞬間移動する
「表示はさせたいけど、セルの選択はしなくていい・・・・・・(>_<)」
という人は、VBAでScrollRowプロパティとScrollColumnプロパティを使ってみて下さい。ScrollRowプロパティでは指定行をウィンドウの上端に表示させることができ、ScrollColumnプロパティでは指定列をウィンドウの左端に表示させることができます。
この二つを組み合わせて、指定位置を左上に表示させます。
ActiveWindow.ScrollRow = 行番号
ActiveWindow.ScrollColumn = 列番号
セルの選択状態は変えず指定位置を左上に表示させるだけなので、表示変更後に任意のセルを Shift + 左クリックすることで範囲選択することもできます。
表示させる位置を、行番号と列番号で指定するサンプルコードはこちら
Sub 指定位置に瞬間移動() Dim y As Variant Dim x As Variant Dim flag As Boolean y = InputBox("表示する「行」を数値で入力" & vbCrLf & "(行はこのままで良い場合、空白 or キャンセル)") If y = "" Then y = ActiveWindow.ScrollRow ElseIf y > 1048576 Then y = 1048576 flag = True ElseIf y < 1 Then y = 1 End If x = InputBox("表示する「列」を数値で入力" & vbCrLf & "(列はこのままで良い場合、空白 or キャンセル)") If x = "" Then x = ActiveWindow.ScrollColumn ElseIf x > 16384 Then x = 16384 flag = True ElseIf x < 1 Then x = 1 End If ActiveWindow.ScrollRow = y ActiveWindow.ScrollColumn = x If flag Then MsgBox "いしのなかにいる!" End Sub
表示させる位置を、行番号と列のアルファベットで指定するサンプルコードはこちら
Sub 指定位置に瞬間移動アルファベットで指定版() Dim y As Variant Dim x As String Dim flag As Boolean y = InputBox("表示する「行」を数値で入力" & vbCrLf & "(行はこのままで良い場合、空白 or キャンセル)") If y = "" Then y = ActiveWindow.ScrollRow ElseIf y > 1048576 Then y = 1048576 flag = True ElseIf y < 1 Then y = 1 End If retry: x = InputBox("表示する「列」をアルファベットで入力" & vbCrLf & "(列はこのままで良い場合、空白 or キャンセル)") If x <> "" Then x = StrConv(x, vbNarrow) x = StrConv(x, vbUpperCase) If x Like "*[!A-Z]*" Then MsgBox "列はアルファベットのみ入力可" GoTo retry End If On Error GoTo ErrorHandler ActiveWindow.ScrollColumn = Range(x & "1").Column On Error GoTo 0 End If ActiveWindow.ScrollRow = y If flag Then MsgBox "いしのなかにいる!" Exit Sub ErrorHandler: x = "XFD" flag = True Resume End Sub
話は変わりますが・・・・・・、ウィザードリィというゲームで瞬間移動する際に座標を間違えると、通路以外の場所に飛んでしまい
というメッセージが表示され、パーティが全滅します。
子供の頃、なけなしの小遣いでファミコン版「ウィザードリィIII ダイヤモンドの騎士」を買ったけれど、これに心を折られ、ソフトを中古屋に瞬間移動させた記憶があります←(ぇ)
全然関係ない話ですけどね。
A1セルに瞬間移動する
表示を、A1セルに戻すサンプルコードはこちら
Sub A1に瞬間移動() ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 End Sub
※コードの使用方法
- SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存しやり直しのできる状態にしておいて下さい。標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。