- ベストアンサー
Excelで Returnキーを押すと任意のセルに移動させるには
エクセルで実行キーを押すと普通はアクディブセルが下に移動しますよね。 これを右や上に変えるのは理解していますが、任意のセルに移動させるにはどうしたらいいのでしょうか。 Application.MoveAfterReturnDirection = xlDown この = の右辺をどう書けばいいかお教えください。例としては A1 D1 A2 D2 A3 D3 . . 即ち、A列、D列を交互に移動させ、文字列、数値を入力したい。とうぞよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>Target はアクティブセルの変数。 そうです。変更したセルになります。 >.Column と.Row の前の Target を省略している。という理解でいいでしょうか。 Withステートメントを使って書いています。Targetという変数が沢山出てきますので・・・ 次は、HELPにある『Withステートメント』の説明です。 -----Help---------------------------------------------------------------------------- With ステートメントを使用すると、一度指定したオブジェクトやユーザー定義型に対して オブジェクト名の再指定を省略して、一連のステートメントを実行できます。 With ステートメントを実行すると、プロシージャの実行速度が向上します。 また、オブジェクトを繰り返し入力をする必要がありません。 ------------------------------------------------------------------------------------- 当然、Withを使わないで書けます。 If Target.Column = 1 Then 'A列の場合 Cells(Target.Row, Target.Column + 3).Select ElseIf Target.Column = 4 Then 'D列の場合 Cells(Target.Row + 1, Target.Column - 3).Select End If ↓ ↓これをWithステートメントを使って書いています。(With ~ End With) ↓ With Target If .Column = 1 Then 'A列の場合 Cells(.Row, .Column + 3).Select ElseIf .Column = 4 Then 'D列の場合 Cells(.Row + 1, .Column - 3).Select End If End With
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
#3のものです。ご希望のものは下記で良さそうです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Application.Goto Target.Offset(0, 3) ElseIf Target.Column = 4 Then Application.Goto Target.Offset(1, -3) Else End If End Sub
お礼
なるほど、Goto Target.Offset というのもアリですか。今回の質問で Private Sub Worksheet_Change(ByVal Target As Range) というのが少し理解できたような気がします。また教えてください。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
たった1行で出来ちゃいました。 Private Sub Worksheet_Change(ByVal Target As Range) Application.Goto Target.Offset(0, 3) End Sub A1セルに何か値を入れて、エンタキーを押すと D1に飛びます。 同じくA5セルに何か値を入れて、エンタキーを押すと D5に飛びます。
補足
ご回答感謝いたします。 希望は文字列や数値を入力してエンタキーを押すたびに、A列からD列に移動した後、一行下のA列に戻りたいのです。A1,D1,A2,D2,A3,D3という順です。よろしくお願いします。
- nishi6
- ベストアンサー率67% (869/1280)
Sheet1で行う場合、下のコードをSheet1のコードウインドウに貼り付けます。ご参考に。 >Application.MoveAfterReturnDirection = xlDown >この = の右辺をどう書けばいいかお教えください。 MoveAfterReturnDirection を使うと大変でしょう・・・・ Sheet1のコードウインドウに貼り付け ↓ Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 Then 'A列の場合 Cells(.Row, .Column + 3).Select ElseIf .Column = 4 Then 'D列の場合 Cells(.Row + 1, .Column - 3).Select End If End With End Sub
補足
早速のご回答感謝いたします。 Target はアクティブセルの変数。 .Column と.Row の前の Target を省略している。という理解でいいでしょうか。
一番簡単な方法は,オプションで移動方向を右にした後,入力したいセルを複数ドラッグで選択します。 すると右に行って下,右に行って下の繰り返しになります。
お礼
いつもありがとうございます。 Withステートメントの使い方もよく分かりました。