業務で作成したExcel資料をクライアントや外部組織に送付する際などに、Excelの全てのシートのカーソルをホームポジション(A1セル)に戻すように指摘を受けたことがある人も多いと思う。
対象のシート数が少ないのであれば、1シートずつ手動でカーソル位置を動かして修正することもできるが、対象のブック数、シート数が多いとそうもいかないだろう。そのようなシチュエーションに対応するべく、Excelの複数シートのカーソル位置を全てA1に揃える方法について、有効な方法が3つ確認できたので、共有しておく。
ショートカット([Ctrl] + [Home])でカーソルをセルA1に揃える
Excel上のカーソルをA1セルに戻せるショートカットキーが存在する。[Ctrl]キー + [Home]キーだ。選択したシート上でこれを行うだけでカーソルをA1に戻せる。
以下のサンプルの画像を確認いただきたい。シート[Sheet1]を表示しており、カーソルがセルE13にあたっている状態であることが分かる。
ここで[Ctrl]キーと[Home]キーを押下してみると、下記の通り、カーソルがA1に移動することが確認できた。対象が複数シートに渡る場合、これを全シートに対して1件ずつ実施していく形となる。(対象が数件程度であれば問題ないが、これが数十件となるとかなりしんどいように思う)
マクロ記録で全てのシートのカーソルをセルA1に揃える
上述の動作をマクロに記録させ繰り返し実施する方法だ。マクロによる操作記録になるため、VBAのようにブック上のシート情報を取得した上で動的に参照するようなことできないが、シート数・シート名称が固定の同じブックに対して繰り返し実施したい場面では有効だ。
Excelのデスクトップアプリは、既定ではマクロを記録する項目がリボンに表示されていないため、手順解説と合わせてExcel上でマクロ記録機能を有効化(リボンの一覧に表示)する方法も記載しておく。
Excelデスクトップアプリでマクロ記録機能をリボン上に表示させる手順
画面上部の[ファイル]タブを選択する。
下記のような画面が表示されるので、[その他…] – [オプション]を選択する。
オプション画面が表示されるので、[リボンのユーザー設定]を選択する。
リボンのカスタマイズ画面が開くので、[リボンのユーザー設定(B)]から[開発]カテゴリを探しチェック、[OK]ボタンを押下する。
メイン画面に戻るので、画面上部のリボンを確認、[開発]タブが追加されていることが確認できる。
[開発]タブを選択すると下記の通りの項目が表示される。
カーソル位置をセルA1に揃えるマクロの作成の流れ
基本的には[開発]タブから[マクロの記録]を選択して、記録したい動作(ここではカーソル位置をA1セルに戻すショートカットキーを各シート上で実施)を実施するだけだ。
初めに[開発]タブの[マクロの記録]を選択する。
[マクロの記録]設定画面が出てくるので、[マクロ名(M)]を設定(なんでもOK)、[OK]ボタンを押下する。
マクロの記録が開始されるので、カーソル位置をA1に戻したい各シートを選択し、1シートずつ[Ctrl] + [Home]キーを実施していく。(画像は割愛)
全シートに対して対応が完了した後、[記録終了]を選択する。
以下は記録されたマクロの確認を行う流れだ。
記録終了後、[マクロ]を選択。
マクロ一覧から先ほど作成したマクロ(Macro1)を選択し、[編集(E)]をボタンを押下。
Microsoft Visual Basic for Applications(VBAの編集画面)が開き、先ほど記録したマクロの実態を確認することが出来る。
Sheet1を選択した状態でマクロ記録を開始したので、ブックの1シートめを指定する動作、Sheets(“Sheet1”).Selectが記録されていないことがわかる。この状態では、[Sheet1]以外を選択した状態でマクロを実行開始した場合、[Sheet1]に対してカーソルをA1に戻す動作が行われなくなってしまう。この事象を回避するためには、マクロの冒頭に Sheets(“Sheet1”).Select を追加する必要がある。(せっかくなので追記しておいた)
カーソル位置が以下の状態になっている4シートに対して記録したマクロ(Macro1)を実行してみる。
[開発]タブ – [マクロ]を選択。
マクロ一覧から実行したいマクロを選択、[実行(R)]ボタンを押下。
マクロが実行され、全4シートの選択カーソルの位置がA1に戻っていることが確認できる。
Excel VBAで全てのシートのカーソルをセルA1に揃える処理を書く
ブック上の全シートの情報を取得、シートを順番に参照し、カーソル位置を全てセルA1に指定する処理をExcel VBAで記載する方法だ。VBAによる処理の記述のため、このブック以外にも移植可能、マクロ記録と異なりシート名やシート数が変化しても実行できる。
他所のブログやサイトでも似たようなものが掲載されているが、作成したコードを一応掲載しておく。
Sub SetAllCursorToA1Cell()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.Activate
ws.Range("A1").Select
Next ws
End Sub
手順の流れは以下の通りだ。
[開発]タブから[Visual Basic]を選択する。
Visual basic for Applicationsの画面が開くので、画面左側の[プロジェクト]配下の[標準モジュール]で右クリック、
挿入(N) ‐ 標準モジュール(M)を選択する
[標準モジュール]配下に[Module2]が新規で作成され、コードエディタ画面が展開される
Module2の編集画面に先述のコードを記載する
この状態で、Sheet1 ~ Sheet4の各シートのカーソルをA1以外に設定、Visual basic for Applicationsの画面上部の[Sub/ユーザーフォームの実行]ボタンを押下する。
マクロ一覧が表示されるので、[SetAllCursorToA1Cell]を選択、[実行(R)]ボタンを押下する
作成したVBAが実行され、全シートの指定カーソルがA1に指定されていることが確認できると思う。
※一度作成したVBAはVisual basic for Applications画面からでなくとも、[開発]タブ – [マクロ]のマクロ一覧から呼び出し可能である。
コメント