選択した範囲を次の行に移動する方法はありますか?
「E9:H9」を選択していて、その選択を「E10:H10」に移動したいとします。そのためのショートカットはありますか?選択範囲は拡張せず、1行下に移動する必要があります。
次のようなものが必要なようです:
Sub moveselection()
Selection.Offset(1, 0).Select
End Sub
これにより、選択範囲のサイズを変更せずに、選択範囲を1行下に移動します。
(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
名前付き引数を使用する、したがって、より明確な代替手段は、次のようなものです。
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
正のrowOffsetは選択をシートの下に移動し、負のrowOffsetは指定された行数を上に移動し、ゼロのオフセットは選択が存在する行を変更せずに残します。
同様に、正のオフセットは選択を右に移動し、負のオフセットは左に移動します。もちろん、ゼロは列を変更しません。
Range.Offsetプロパティ(Excel)を参照してください
関連する2つの発見は、将来の訪問者にとっても興味深いかもしれません。
Selection.EntireColumn.Insert
とRange.Insertに注意してください。これは、保護されたワークシート(保護されている間に列の挿入が許可されている場合でも)など、少なくとも一部の状況ではランタイムエラー1004を発生させます。OK、
カーソルは行にある必要があり、範囲 "E"と "GN"は異なる列に対して調整が必要ですが、時間を節約できます。
Sub SelectRange()
Dim RowNumber As Integer
RowNumber = Selection.Row
Range("E" & CStr(RowNumber) & ":" & "GN" & CStr(RowNumber)).Select
End Sub