web-dev-qa-db-ja.com

Excel 2007で選択範囲を1行下に移動するにはどうすればよいですか?

選択した範囲を次の行に移動する方法はありますか?

「E9:H9」を選択していて、その選択を「E10:H10」に移動したいとします。そのためのショートカットはありますか?選択範囲は拡張せず、1行下に移動する必要があります。

6
user48604

次のようなものが必要なようです:

Sub moveselection()

Selection.Offset(1, 0).Select

End Sub

これにより、選択範囲のサイズを変更せずに、選択範囲を1行下に移動します。

12
Excellll

(a)そのコードは質問ごとに1行下に移動しません

(b)選択範囲の最初の行でのみ機能しますが、複数行の選択範囲で機能しますか?

(c)これのサブルーチンを呼び出すのではなく、マウスを右クリックして自動的に実行できます。これを行うには、シートタブを右クリックして[コードの表示]を追加し、以下のコードに貼り付けます。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    On Error Resume Next
    Range("E" & CStr(Selection.Row) & ":" & "GN" & CStr(Selection.Row)).Select
End Sub
3
brettdj

名前付き引数を使用する、したがって、より明確な代替手段は、次のようなものです。

ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate

正のrowOffsetは選択をシートの下に移動し、負のrowOffsetは指定された行数を上に移動し、ゼロのオフセットは選択が存在する行を変更せずに残します。

同様に、正のオフセットは選択を右に移動し、負のオフセットは左に移動します。もちろん、ゼロは列を変更しません。

Range.Offsetプロパティ(Excel)を参照してください

関連する2つの発見は、将来の訪問者にとっても興味深いかもしれません。

  1. 列を挿入するには、次の手順を実行します。 Selection.EntireColumn.InsertとRange.Insertに注意してください。これは、保護されたワークシート(保護されている間に列の挿入が許可されている場合でも)など、少なくとも一部の状況ではランタイムエラー1004を発生させます。
  2. 先ほど説明した方法では、新しい列に挿入ポイントが残ります。選択を移動する方法を探してここに来たまでは気づきませんでした(必要がないことを発見しただけです)。
1
David A. Gray

OK、

カーソルは行にある必要があり、範囲 "E"と "GN"は異なる列に対して調整が必要ですが、時間を節約できます。

Sub SelectRange()

  Dim RowNumber As Integer

  RowNumber = Selection.Row
  Range("E" & CStr(RowNumber) & ":" & "GN" & CStr(RowNumber)).Select

End Sub
0
user48604