• ベストアンサー

Excelで Returnキーを押すと任意のセルに移動させるには

エクセルで実行キーを押すと普通はアクディブセルが下に移動しますよね。 これを右や上に変えるのは理解していますが、任意のセルに移動させるにはどうしたらいいのでしょうか。 Application.MoveAfterReturnDirection = xlDown この = の右辺をどう書けばいいかお教えください。例としては A1 D1 A2 D2 A3 D3 . . 即ち、A列、D列を交互に移動させ、文字列、数値を入力したい。とうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>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

shonenA
質問者

お礼

いつもありがとうございます。 Withステートメントの使い方もよく分かりました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#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

shonenA
質問者

お礼

なるほど、Goto Target.Offset というのもアリですか。今回の質問で Private Sub Worksheet_Change(ByVal Target As Range) というのが少し理解できたような気がします。また教えてください。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

たった1行で出来ちゃいました。 Private Sub Worksheet_Change(ByVal Target As Range) Application.Goto Target.Offset(0, 3) End Sub A1セルに何か値を入れて、エンタキーを押すと D1に飛びます。 同じくA5セルに何か値を入れて、エンタキーを押すと D5に飛びます。

shonenA
質問者

補足

ご回答感謝いたします。 希望は文字列や数値を入力してエンタキーを押すたびに、A列からD列に移動した後、一行下のA列に戻りたいのです。A1,D1,A2,D2,A3,D3という順です。よろしくお願いします。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

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

shonenA
質問者

補足

早速のご回答感謝いたします。 Target はアクティブセルの変数。 .Column と.Row の前の Target を省略している。という理解でいいでしょうか。

noname#3361
noname#3361
回答No.1

一番簡単な方法は,オプションで移動方向を右にした後,入力したいセルを複数ドラッグで選択します。 すると右に行って下,右に行って下の繰り返しになります。

関連するQ&A