やったこと
「全部のシートでA1セルに移動して元のシートに戻る」マクロを作って、
アドインとして保存(ブック依存じゃなくていつでも使えるように)し、
クイックアクセスツールバーに登録して、ショートカット一発で動くようにする。
はじめに
参考URL
Excelで全シートのカーソルをA1に移動する”お作法”を自動化するVBAマクロ – NAEの仕事効率化ノート
コーディングの参考に
マクロをアドインにして他のブックで使用する | Excel2013 | 初心者のためのOffice講座
マクロの登録の仕方
作ろうと思ったきっかけ
Excelを業務で使っていて最近やったやらかしの一つに、「人の使ったファイルを開いて作業してたけど上までスクロールしてないのに気づかなくて何行か分まるっとデータがすっぽ抜けた」というのがある。
これを外部向けの資料とかでやるともちろん怒られるし、数字が合わなくてえらいことになるのは自明である。
「一度ミスればこれからは気を付けるだろう、だから心配しなくていい」というありがたいお言葉をいただいたが、そんなもんはいつか忘れるのである。
なので全シートA1にボタン一発でいくようにしとけば、スクロール忘れでデータが抜けるなんてことはなくなるはず。
A1に移動というお作法
Excelで全シートのカーソルをA1に移動する”お作法”を自動化するVBAマクロ – NAEの仕事効率化ノート
そもそも「人にExcelファイルを渡すときは、全部のシートでカーソルをA1セルに移動させて、最初のシートをアクティブにして保存してから渡しなさい」というお作法的なヤツがあるらしい。
"ビジネスマナー"や"お作法"と化した手順についてはわりと猜疑的な方だが(何千行とある台帳的なファイルで毎回上からたどるのか、とか)、今回はおいておく。
少なくとも中途半端なスクロールで痛い目を見たのは間違いないので、必要なこともあるのだろう、と。
実装
参考URLからのカスタマイズとして、大体のサイトは「全シートA1移動→最初のシートに移動」としているところを、「今アクティブなシートに戻る」ように変更した。
作業中にふと上を見たくなることもあるだろう、と。
コーディング
コード自体に難しい要素はない。
Sub A1move()
Dim wsnow As Worksheet
Dim ws As Worksheet
'現在のシートを取得
Set wsnow = Application.ActiveSheet
'各シートでカーソルをA1セルに移動
For Each ws In Worksheets
ws.Select
ws.Range("A1").Select
Next
'取得しておいた現在のシートに戻る
wsnow.Select
End Sub
マクロの登録
参考:マクロをアドインにして他のブックで使用する | Excel2013 | 初心者のためのOffice講座
手順
- コードを写した後に、ワークシートの方をアクティブにしてF12で別名保存ダイアログを開く
- 拡張子を「Excel アドイン(*.xlam)」に変える
- 自動でAddInsフォルダに保存先が切り替わるので、適当な名前つけて保存する
- マクロのプロシージャ名にしておくと分かりやすい(今回なら「A1move.xlam」)
- アドインを登録する
- 開発>アドインを選択
- 保存したアドイン「A1move」にチェックを入れて、OKを選択
- クイックアクセスツールバーに登録する
- 最上部メニュー「クイックアクセスツールバーのユーザー設定>その他のコマンド…」を選択
- プルダウンメニュー「コマンドの選択」で「マクロ」を表示
- 「A1move」を選択して、「追加」で、クイックアクセスツールバーに登録されたことを確認
- OKで戻る
- 最上部のクイックアクセスツールバーに、「A1move」が登録されたことを確認
これで、「Alt+(数字)」キーで常にA1moveが使えるようになった。
マクロって何?とか詳しくない人向け
何もわからないけどできるようになりたい!という人向けに、丁寧な方の手順も書いておく。
最初っから手順をなぞる
Sub A1move()
Dim wsnow As Worksheet
Dim ws As Worksheet
'現在のシートを取得
Set wsnow = Application.ActiveSheet
'各シートでカーソルをA1セルに移動
For Each ws In Worksheets
ws.Select
ws.Range("A1").Select
Next
'取得しておいた現在のシートに戻る
wsnow.Select
End Sub
おわりに
ブックの起動時に自動で実行される(参考:VBA基本(そのブックを開いた時に自動実行))とかもやってみたかったけど、ブック依存マクロとしてしか保存できず、どのファイルでも自動で実行にはならないみたいなのでひとまずあきらめた。
こいつのおかげでExcel地獄諸氏の貴重な数十秒とうちのようなやらかしがなくなることを祈る。