さて、私が正しく理解していれば、タブキーの機能を独自のものに置き換えたいと思うでしょう。そのためには、 を使用しますApplication.OnKey。
簡単な例として、VBA エディターで Sheet1 を開き、次のコードを入力します。
Private Sub Worksheet_Activate()
Application.OnKey "{TAB}", "TabIntercept"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{TAB}"
End Sub
次に、モジュールを挿入し、次のような公開サブを記述します。
Public Sub TabIntercept()
ActiveCell.Offset(2).Activate
End Sub
Sheet1 で、タブは通常のように右側のセルではなく、現在のセルの 2 つ下のセルを選択します。
もちろん、これを if ステートメントで拡張できます。次の例のように、セル A2 にカーソルがあり、B2 の値が 5 の場合を除いて、タブは通常どおり機能します。この場合、セルは C3 にジャンプします。
Public Sub TabIntercept()
If Not Intersect(ActiveCell, Sheet1.[A2]) Is Nothing And Sheet1.[B2] = 5 Then
Sheet1.[C3].Activate
Else
ActiveCell.Offset(0, 1).Activate
End If
End Sub
補足として、Shift-Tab をサポートしてカスタム選択を逆方向に循環させたい場合は、2 つ目のサブルーチンを作成し、OnKeyメソッドに別の呼び出しを追加する必要があります。のようなものApplication.OnKey "+{TAB}", "ReverseTabIntercept"。プラス記号は、こちらのドキュメントで確認できるようにシフト キーを示します。