会社で仕事をしている時に、Excelを開いたときにセルがA1を選択していてほしいという要望がありました。
そこで、本記事ではすべてのシートのカーソルをA1に戻すマクロを紹介します。
目次
全てのシートのカーソルをA1に戻すマクロ
1. VBAのソースコードを書く
マクロのソースコードは以下になります。
copy
' 全てのワークシートのセルをA1に戻すマクロ
Public Sub SelectCellA1()
Dim ws As Worksheet
' 全てのワークシートに対して処理を繰り返す
For Each ws In Worksheets
' ワークシートをアクティブにしないと、A1をSelectするときにエラーになる
ws.Activate
ws.Range("A1").Select
Next
' 最後に1シート目をアクティブにする
Worksheets(1).Activate
End Sub
2. マクロを動かすための準備
それでは、マクロの動作を確認するための準備をします。
準備をするといっても、マクロを作成したExcelにシートを追加して、カーソルを適当な位置に移動しておくだけで完了です!
3. 全てのワークシートのセルがA1に戻ることを確認する
それでは、マクロを実行しましょう。
キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。
Excelに戻って、全てのシートのカーソルの位置を確認してみてください。
セルのカーソルがA1になっていると思います。
Excelを保存するときにイベントを発動させる
ただ、いちいち開発タブからマクロを実行するのは面倒なので、もっと簡単にマクロを実行できるようにしたいですよね。
個人的には、Excelを保存するときに全てのシートのカーソルがA1に戻ってくれると、戻し忘れがなくなるため良いと思っています。そこで、保存したときに上記で作ったマクロを実行する方法を紹介します。
1. ThisWorkbookモジュールを開く
プロジェクトの中にある、【ThisWorkbook】をダブルクリックしましょう。
2. 保存する前に発動するイベントを書く
次に、(General)と書いてあるプルダウンをクリックして、【Workbook】を選択しましょう。
【Workbook】を選択すると、以下のようにWorkbook_Openが勝手に書かれますが、とりあえず無視してください。
右側のプルダウンをクリックして、【BeforeSave】を選択しましょう。
すると、Workbook_BeforeSaveが自動的に書かれます。
このなかに処理を書くと、保存する前に処理が自動的に実行されるようになります。
また、今回はWorkbook_Open()は不要なので消しておきます(以下の図では消去済み)。
3. ソースコードを書く
Workbook_BeforeSaveの中で、上記で作成したカーソルをA1に戻すマクロを呼び出しましょう。
【Call メソッド名】で処理を呼び出すことが出来ます。
copy
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call SelectCellA1
End Sub
4. Excelを保存して、処理を確かめる
ここまで完了したら、マクロが正しく動くことを確認しましょう。
上記と同じように、シートを追加して、カーソルを移動しておきます。
そして、今度はExcelを保存したときに、全てのシートのセルがA1に選択されていれば完了です!
マクロを別の方法で呼び出す
「保存する時にいつもA1に戻るのは困る…けど楽にマクロを呼び出したい」という方には、他に以下2つの方法がありますので参照ください。
ツールバーにマクロを設定する

ボタンを表示してマクロを設定する
