アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/19 15:44

#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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/19 16:17

たった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という順です。よろしくお願いします。

補足日時:2003/01/19 13:38
    • good
    • 0

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 を省略している。という理解でいいでしょうか。

補足日時:2003/01/19 13:16
    • good
    • 0

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


すると右に行って下,右に行って下の繰り返しになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています