背景
Excel ファイルの複数シートに対し数値を入力する作業、よくあると思います。この場合、
テンキー入力→シート移動→テンキー入力→シート移動→・・・という操作になります。
シート移動は普通マウスを使う(玄人さんの場合、Ctrl+PgUp/Ctrl+PgDnでしょうか)ので、テンキー/マウス間の移動が発生するため、作業効率がよくありません。
入力内容が少ない場合は大した事はありませんが、長時間になればなるほど「もっと入力作業に集中したい」という気持ちになるのではないでしょうか。
サンプル
今回のサンプルは、入力操作で絶対使わないキーに対し「シート移動」関数を割り当てます。使う可能性のあるキーに関数を割り当てると痛い目にあいますので、業務内容を事前によく精査する事をオススメします。
さて、サンプルは
- Workbook_Open イベントに「キーとキーを押した時に実行される関数」を登録
- 共通モジュール等に「シート移動の関数」を登録
今回は、テンキーの[+]キー及び[-]キーに関数を割り当てます。
Workbook_Open イベント
Application.OnKey メソッドを利用する事で、キーに何らかの処理を割り当てる事が出来ます。下記サンプルの{107}、{109}は、テンキーの[-]や[+]を示します。
fncMoveNextSheet、fncMovePreviousSheetは、シートを前後に移動する関数です。
Private Sub Workbook_Open() 'テンキー[+]の処理 Application.OnKey "{107}", "fncMoveNextSheet" 'テンキー[-]の処理 Application.OnKey "{109}", "fncMovePreviousSheet" End Sub
シート移動の関数
シート移動は、Worksheet.Next プロパティ、及びWorksheet.Previous プロパティを使います。最初又は最後尾のシートで移動操作を行うとエラーが発生するため、エラー処理を入れています。
最初のシートでfncMovePreviousSheet 関数を実行すると最後尾のシートに移動、最後尾のシートでfncMoveNextSheet 関数を実行すると最初のシートに移動します。
'テンキーでシートを移動する Public Sub fncMovePreviousSheet() On Error GoTo MOVE_ERR ActiveSheet.Previous.Activate Exit Sub MOVE_ERR: Worksheets(Worksheets.Count).Activate End Sub 'テンキーでシートを移動する Public Sub fncMoveNextSheet() On Error GoTo MOVE_ERR ActiveSheet.Next.Activate Exit Sub MOVE_ERR: Worksheets(1).Activate End Sub