Excel VBA C# (Android Xamarin) 入門

Excel VBA C#(主にAndroid+xamarin、Visual Studio)での開発記事を執筆します。

マクロでセルの移動方向を制御する

マクロでセルの移動方向を制御する

Enter キーを押したとき、セルは下に移動します(初期設定)。
[オプション]からセルの移動方向を上下左右に変更することができます。

1)『オプション』メニューからセルの移動方向を変更する方法

『ファイル』⇒『オプション』⇒『詳細設定』⇒『Enterキーを押したら、セルを移動する(M)』で変更できます。
上・下・左・右の4方向から選びます。





この変更方法は、すべてのExcelファイルに対して設定が反映されます。
つまり、ファイルAを開いているときにセルの移動方向を『右』に設定すると、ファイルBを開いたときも
セルの移動方向は『右』になります。

特定のファイルだけセルの移動方向を変更したい!という方は、次のマクロで変更する方法に進みましょう。

2)マクロでセルの移動方向を変更する方法


書き込むワークブックは「ThisWorkbook」です。以下のソースを張り付けてください。

'ブックがアクティブになったとき、セルを右に移動するよう設定
Private Sub Workbook_Activate()
  
    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlToRight

End Sub

'ブックが非アクティブになったとき、セルを下に移動するよう設定
Private Sub Workbook_Deactivate()
    
    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlDown

End Sub

ブックのイベントプロシージャを復習しましょう。

Activateブックがアクティブになったとき

イベントの種類 イベントトリガー
Deactivate ブックがアクティブでなくなったとき


ここで使うプロパティは以下の2つです。

MoveAfterReturn
ユーザーが Enter キーを押したときに、アクティブ セルを移動するかどうかを決定します。既定値は True です。ユーザーが Enter キーを押したときにアクティブ セルを移動する方向を設定するには、MoveAfterReturnDirection プロパティを使用します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
使用例
次の使用例は、ユーザーが Enter キーを押した後も、アクティブ セルが選択されたままの状態にします。
Spreadsheet1.MoveAfterReturn = False
出典
https://msdn.microsoft.com/ja-jp/library/cc409510.aspx

 

MoveAfterReturnDirection
MoveAfterReturn プロパティが True に設定されている場合、ユーザーが Enter キーを押したときにフォーカスが移動する方向を設定します。値の取得および設定が可能です。使用できる定数は、XlDirection クラスの定数のいずれかです。
使用できる定数は、次に示す XlDirection クラスの定数のいずれかです。
xlDown、xlToLeft、xlToRight、xlUp
使用例
次の使用例は、ユーザーが Enter キーを押した後も、アクティブ セルが選択されたままの状態にします。
Spreadsheet1.MoveAfterReturn = False
出典
https://msdn.microsoft.com/ja-jp/library/cc409511.aspx




以上で完成です。

応用編

2)マクロ編では『ThisWorkbook』にマクロを記述しました。これによりブックの表示を切り替えるたびにセルの移動を初期値の「下」に戻しています。
他の活用方法として、シートのワークブックにコードを記述すれば、そのシートを表示している時だけセルの移動を切り替えることもできます。