Excelは保存時に強調したいセルがある、等々の理由がない限りA1セルに合わせる、というマナーがあります。そのマナーの是非について問うつもりはありません。
今回の記事では、保存時に自動でA1セルに合わせるマクロを記載します。
前提
- Excel
- Microsoft Office Home And Business 2019
対応
概要
- 全シートをA1セルに合わせるメソッドを定義
- 保存時に起動するイベントプロシージャを定義
全シートをA1セルに合わせるメソッドを定義
ThisWorkbook.Worksheetsを呼ぶとシートの数分だけループ処理が走ります。
あとは全シートをA1セルに合わせるため、シートごとにActivateして、Range("A1").SelectするとA1セルに合わせてくれます。
最後に、その処理だけだと常に最後のシートのA1セルがアクティブになっているので、作業中のシートに戻ってくるような処理を追加しました。
' 全ワークシートをA1セルにする
Sub SetActiveCellInAllSheets()
Dim ws As Worksheet
' 現在アクティブなシートの名前を取得
Dim current As String
current = ActiveSheet.Name
' すべてのワークシートに対してループを実行
For Each ws In ThisWorkbook.Worksheets
' 各ワークシートのA1セルをアクティブセルに設定
ws.Activate
ws.Range("A1").Select
Next ws
' 現在のシートに戻す
ThisWorkbook.Sheets(current).Activate
End Sub
保存時に起動するイベントプロシージャを定義
Workbook_BeforeSaveを定義しておくと、保存の前に処理が走ります。
' 保存前に処理するメソッド
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SetActiveCellInAllSheets
End Sub
備考
保存時、ではなく終了時にマクロが発生するように作ろうと思っていましたが、期待通りに動かなかったので保存時に動かしています。
どうやら、マクロの使用許可が邪魔をしているようですが、許可したうえでも動かなかったので今回の検証からは外しています。
ソースコード
ありません。
取得元ファイル
終わりに
A1セルに合わせるってどこから生まれたマナーなんですかね。
参考情報
- Excel閉じるときに動かない問題についての参考記事