Excel VBAはExcelでの作業を自動化・効率化するためのプログラミング機能です。本記事では定番とも言えるA1セルを選択するマクロとその意味について記事にまとめました。
A1セルを選択するマクロとその意味
Excelは最後に保存したセル位置やスクロール位置等を保存しています。お手元のExcelでセル位置やスクロール位置を変えて保存し閉じた後、再度ファイルを開くと最後に選択したセル位置とスクロール位置で開かれることが確認できると思います。この機能は作業再開のし易さ等には寄与しますがデメリットになってしまうケースが存在します。
例えば、Aさんが何かを説明するためにファイルを作成し、そのファイルを説明を受けるBさんへ共有するといったケースです。当然そのファイルをBさんが開くとAさんが最後に作業した位置でファイルが開かれます。この時Bさんはこの資料がどこから始まっているのかを上スクロール、あるいはシートをさかのぼって開始位置を探さなくてはならず余計な手間をBさんに煩わせてしまいます。そしてこれはシート数や記載内容の量、内容自体の複雑さ等の増加に比例して負担が大きくなってしまいます。
このような問題を把握している人はスクロールを上に戻し、A1セルに戻した上でファイル保存するといった作業を行うのですが、その作業を自動化しているのが下記のコードになります。
' A1セルを選択する
Sub A1Select()
Dim zoomLevel As Integer: zoomLevel = 100 ' 表示倍率を100%に設定
' 最初のシートを保持しておく
Set firstSheet = ActiveWorkbook.Worksheets(1)
' シートごとに処理
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
' A1セルを選択
ws.Cells(1, 1).Select
' スクロールバーを最左・最上に設定
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
' 表示倍率を設定
ActiveWindow.Zoom = zoomLevel
Next ws
' 最初のシートを再度アクティブにする
firstSheet.Activate
End Sub
上記のコードでは、セル位置をA1、スクロールバーの位置を最左最上に設定する他に表示倍率を100%にする機能も入っています。私の場合は資料内のキャプチャの大きさ等から70~85%が適切な倍率になることが多いですが、一応上記のコードでは100%としています。
もし、特定のシートの特定のセル位置から見てほしいといった場合は、このマクロを起動し全てのシートの表示位置をA1に設定した後に手作業でその特定のシートを選択、特定のセルを選択して保存といった作業が必要です。きちんと意図した保存状況になっているかは再度保存したファイルを開けば確認できます。ただし、ファイル共有時に見てほしい位置について連絡することは必要かなと思います。共有する相手はファイルを開いた時の表示位置が本当に貴方が共有したい内容の表示位置となっているかどうかの確信はないためです。上記の保存位置を合わせる作業は、あくまで相手に開始位置を探させるような手間を取らせないための小さな心配りといったイメージです。
上記はひな型のコードであり、皆様の実業務に合わせて改変して使用頂ければよいかと思います。例えば表示倍率の設定やスクロールバーの設定が要らなければ削除で問題ないですし、表示倍率をマクロ起動時にダイアログ等で都度入力したいといった場合は冒頭部分でInputBox等を使用して下さい。
まとめ
ある意味定番とも言えるA1セルを選択するマクロについて記載しました。
本記事の内容が訪問頂いた貴方のお役に立てれば幸いです。
内容の正確性には可能な限り配慮しておりますが、誤りや見落としが含まれる場合があります。
また、学習の進行や考え方の変化により記事の内容は随時加筆・修正される場合がありますので、あらかじめご了承いただけますと幸いです。