きり丸の技術日記

技術検証したり、資格等をここに残していきます。

Excelで保存時にA1セルに保存する(VBAマクロ使用)

Excelは保存時に強調したいセルがある、等々の理由がない限りA1セルに合わせる、というマナーがあります。そのマナーの是非について問うつもりはありません。

今回の記事では、保存時に自動でA1セルに合わせるマクロを記載します。

前提

  • Excel
    • Microsoft Office Home And Business 2019

対応

概要

  1. 全シートをA1セルに合わせるメソッドを定義
  2. 保存時に起動するイベントプロシージャを定義

全シートを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セルに合わせるってどこから生まれたマナーなんですかね。

参考情報