矢印キーが押されたときに特定のセルを飛ばして移動させるには?

Question 80.4 Excel VBA Borad (掲示板)より Previous Next
ときどき読ませていただき、参考にさせていただいています。 早速ですが、ある特定のセルにカーソルが行かないようにしたいのです。
たとえば、特定のセルを B2だとします。
  A2から右矢印キーで B2に動かそうとすると、C2に行く
  C2から左矢印キーで B2に動かそうとすると、A2に行く
  B1から下矢印キーで B2に動かそうとすると、B3に行く
  B3から上矢印キーで B2に動かそうとすると、B1に行くようにしたいのです。
Target.Row=2 かつ Target.Column=2 の時に B2以外のセルへ行かせればよいと思うのですが、 どの矢印キーが押されたのか の判断がわかりません。 どなたか教えていただけますか。よろしくお願いします。
[補足]
マクロを使わなくても、セルの書式設定-保護-ロック での設定と、シートの保護-ロックされたセル範囲の選択 での設定を組み合わせれば一応可能と思いますが、その特定のセルを変更しようとするとメッセージが出てしまいます。 このメッセージがうっとうしいので、そのセルをとばして次のセルに行かせたいのです。
Answer   2006.3.11 通りすがり
強引ですが、こんな方法はどうでしょう。 ワークシートモジュールに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.OnKey "{RIGHT}", "右"
    Application.OnKey "{LEFT}", "左"
    Application.OnKey "{DOWN}", "下"
    Application.OnKey "{UP}", "上"
End Sub
標準モジュールに
Sub 右()
    If ActiveCell.Address(False, False) = "A2" Then
        ActiveCell.Offset(0, 2).Activate
    ElseIf Not ActiveCell.Column = 256 Then
        ActiveCell.Offset(0, 1).Activate
    End If
End Sub
Sub 左()
    If ActiveCell.Address(False, False) = "C2" Then
        ActiveCell.Offset(0, -2).Activate
    ElseIf Not ActiveCell.Column = 1 Then
        ActiveCell.Offset(0, -1).Activate
    End If
End Sub
Sub 下()
    If ActiveCell.Address(False, False) = "B1" Then
        ActiveCell.Offset(2, 0).Activate
    ElseIf Not ActiveCell.Row = 65536 Then
        ActiveCell.Offset(1, 0).Activate
    End If
End Sub
Sub 上()
    If ActiveCell.Address(False, False) = "B3" Then
        ActiveCell.Offset(-2, 0).Activate
    ElseIf Not ActiveCell.Row = 1 Then
        ActiveCell.Offset(-1, 0).Activate
    End If
End Sub
実用性あるかわかりませんが (汎用性は無い)、一応 B2 には移動不能になっているかと。 直接選択してしまえば意味ありませんが、カーソルでの移動は制御できるかなと。
ありがとうございました
確認しました。B2をとばしているのを見て、感激しますね。当たり前でしょうが。 汎用性については、大丈夫です。変更して利用させていただきます。 なお、直接マウスでB2を選択した時は、ワークシートモジュールに
    If Target.Column = 2 And Target.Row = 2 Then
        Cells(Target.Row, Target.Column + 1).Select
    End If
のように、1セル分右に動かすことにして、追加することにします。 または、Application.MoveAfterReturnDirection に応じてセルを動かすようにしてみます。実際に作成しているシートは、もう少しだけ複雑ですが,・・・。
今まで、「あるキーが押されたら」という制御をしたことがほとんどなかったので、とても参考になりました。
ありがとうございました。

Excel VBA Macro