こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル2003 VBAでセル移動

いつもお世話になります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 9 Then
If Target.Column = 3 Then
Cells(Target.Row, 4).Select
ElseIf Target.Column > 5 Then
Cells(Target.Row + 1, 1).Select
End If
End If
End Sub

これで、B列からC列を飛ばしてD列にセル移動して取りあえずの目的は達成しているのですが、
D列からB列には方向キー移動してくれません。Target.Columnが3になるんで当たり前なんですが・・・

B列の入力ミスがあるときマウスで移動させるか、A列まで戻ってから方向キーで上に上がるかです。
何かいい方法ありませんでしょうか。D列から方向キーで戻るときも、出来ればC列を飛ばしてほしいです。
よろしくお願いします。

投稿日時 - 2011-03-24 14:54:38

QNo.6617184

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

質問がややこしい書き方になっているが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
Case 3
Target.Offset(0, 1).Select
Case Is > 5
Cells(Target.Row + 1, 1).Select
End Select
End Sub
の様なことか?
ーー
注意
(1)MoveAfterReturnを「右」に設定しておく(ここでは手動設定、VBAでも出来るが)
(2)D列からB列への左矢印キーでのバックが出来ないが。
ーー
最後の(2)件が困るということか?
イベントでは前のセルの選択状態(セル)は持っていないので
標準モジュールに
Public mt
シートイベントに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
Case 3
If mt.Column = 2 Then
Target.Offset(0, 1).Select
Else
Target.Offset(0, -1).Select
End If
Case Is > 5
Cells(Target.Row + 1, 1).Select
End Select
Set mt = Target
End Sub
横移動は矢印で行うことに統一。(C列をクリックするとB列にいく場合とD列にいく場合が出てしまう。)
もっと良い回答が出たり、不都合な場合は本件無視してください。
でも、ちとやりすぎだと思う(SelectionChangeに頼るのは無理がある、要求が細かすぎる)

投稿日時 - 2011-03-24 15:42:58