Exceでは、[Enter]キーを押したあと、次にどのセルをアクティブにするのかを変更できます。
2003までのExcelならば[オプション]ダイアログ−[編集]タブ−[入力後にセルを移動する]欄で、Excel 2007ならば[Excelのオプション]ダイアログ−[詳細設定]−[編集設定]欄−[Enterキーを押した後にセルを移動する]欄で、[Enter]キーを押したあとにセルを移動するかどうか、移動するならば下・右・上・左のどの方向へ移動するのかを設定できます。
この[Enter]キーを押したときの設定について、
「エクセル Enter後 移動方向 シート毎設定」
「エクセル 入力後セル移動方向 ファイル毎に」
といった検索がこのサイトで見かけることがあります。
ワークシートごと・ブック(ファイル)ごとに、[Enter]キーを押したあとの移動方向を切り替える方法を探している方の検索です。
[Enter]キーを押した後のアクティブセルの移動方向は、アプリケーションごとに設定されるものなので、標準の機能で、シートごとやブックごとに[Enter]後に移動する方向を変えることはできません。
しかし、VBA(Visual Basic for Applications)を利用して、イベントプロシージャを作成すれば、シートごと・ブックごとに移動方向を変更したり、移動するかどうかを設定できます。
Private Sub Worksheet_Activate()
Application.MoveAfterReturn = True
Application.MoveAfterReturnDirection = xlToRight
まず、Application.MoveAfterReturnプロパティで、[Enter]キーを押したあとにアクティブセルを移動するかどうかを設定します。「True」なら移動する、「False」なら移動しない設定になります。
Application.MoveAfterReturnプロパティを「True」にして移動する設定にした場合、Application.MoveAfterReturnDirectionプロパティで移動方向を指定できます。
「xlDown」なら下
「xlToRight」なら右
「xlToLeft」なら左
「xlUp」なら上
となります。
▼サンプルファイル(003625.xls 41KByte)ダウンロード
サンプルファイルには、
「MoveAfterReturn_False」
「Down」
「ToRight」
「ToLeft」
「Up」
のという5つのワークシートが作成してあり、Worksheet_Activateイベントプロシージャで、それぞれ
「Application.MoveAfterReturn = False」
「Application.MoveAfterReturnDirection = xlDown」
「Application.MoveAfterReturnDirection = xlToRight」
「Application.MoveAfterReturnDirection = xlToLeft」
「Application.MoveAfterReturnDirection = xlUp」
が設定してあります。
それぞれのシートで、[Enter]キー後に、移動しなくなったり、移動方向が自動的に変更されることをご確認いただけるでしょう。
ファイルごとに、移動するかどうか・移動方向を設定したい場合、Workbook_Activateイベントプロシージャに同様のコードを書いておけばOKです。
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 入力後のセル移動方向をシートごと・ブックごとに変える