Excelで作成したファイルをお客さんに納品するときなど、「誰かに見せる」機会に、昔から行われている儀式というかお作法が有ります。
全てのシートのカーソル位置を左上に移動する!
Excelにはファイル自体にカーソル位置を覚えておく機能があります。個人でエクセルファイルを編集している間は便利な機能ですが、他人に見せる場合は邪魔になることが多いです。友人や会社の同僚ならまだしも、上司や顧客に「エクセルのどの部分を編集していたのか」が知られてしまうのは、こっ恥ずかしいものです。
今回はとても単純だけど面倒な作業をExcelマクロで自動化してしまおうというお話です。
※ノートパソコンのキーボードなどは[Fn]キーも一緒に押します。
このキー操作をエクセルファイルの全てのシートで行うことで、カーソル位置を左上(A1)に揃えることが出来ます。
更にシートの切り替えは次の操作で可能です。
カーソル位置をキーボード操作のみで”A1″に揃える方法
この面倒な作業をキーボード操作で済ませる方法があります。
[Ctrl] + [Home]
[Ctrl] + [PageUp] / [PageDown]
この2つの操作を繰り返せば10秒とかからない間にカーソル位置を揃えることができます。
処理したいファイルの数が片手で数えられるくらい少ない場合は、この方法で事足りるでしょう。これが10ファイル、20ファイル、30ファイル…となると、かなり面倒くさいですね。
そんなときのために、こういった定型的な操作はマクロに任せてしまうのが定石です!
カーソル位置をマクロで”A1″に揃える方法
カーソルを左上のセルに移動する操作をマクロ(VBA)で書くと、次のようになります。
Range("A1").Select ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1
1行目で文字通りA1セルを選択し、2行目と3行目で画面のスクロール位置を1行目の1列目に移動しています。
これをエクセルファイルの全てのシートに対して行うには、次のコードを追加します。
Sub sample() Dim wb As Workbook '現在選択されているブックを変数に格納 Set wb = ActiveWorkbook Dim ws As Worksheet 'ブックの中のシートを1枚ずつループ For Each ws In wb.Worksheets '処理対象のシートを有効にする ws.Activate '"A1"セルを選択 Range("A1").Select ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 Next ws '先頭のシートを有効にする wb.Worksheets(1).Activate '使用したオブジェクトを破棄 Set wb = Nothing End Sub
11行目~13行目のA1のセルを選択する処理のためだけに大げさな感じになりましたが、この選択中のブックのシートをループする処理は、全てのシートに対して何度となく繰り返し発生する操作(ルーチン作業)を自動化するのに非常に有用です。
以上、今回はこのへんで。
コメント