6

Есть ли способ переместить выбранный диапазон в следующий ряд?

Допустим, я выбрал «E9:H9» и хочу, чтобы выбор переместился на «E10:H10». Есть ли для этого ярлык? Выбор не должен быть расширен, но перемещен на одну строку вниз.

4 ответа4

11

Похоже, вам просто нужно что-то вроде этого:

Sub moveselection()

Selection.Offset(1, 0).Select

End Sub

Это переместит ваш выбор на одну строку вниз без изменения размера выделения.

3

(а) этот код не сдвигается вниз на одну строку в соответствии с вопросом

(б) Он будет работать только с первой строкой выбора, вы хотели, чтобы он работал с несколькими строками?

(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
1

Альтернатива, которая использует именованные аргументы и, следовательно, намного понятнее, выглядит примерно так.

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

Положительное rowOffset перемещает выделение вниз по листу, отрицательное rowOffset перемещает вверх на указанное количество строк, а нулевое смещение оставляет строку, в которой находится выделение, без изменений.

Аналогично, положительные смещения перемещают выбор вправо, в то время как отрицательные смещения перемещают его влево. Ноль, конечно, оставляет столбец без изменений.

Смотрите Диапазон.Свойство смещения (Excel)

Два связанных открытия могут также представлять интерес для будущих посетителей.

  1. Чтобы вставить столбец, сделайте следующее. Selection.EntireColumn.Insert и остерегайтесь Range.Вставка, которая вызывает ошибку времени выполнения 1004, по крайней мере, при некоторых обстоятельствах, таких как защищенные рабочие листы (даже если вставка столбца разрешена, пока она защищена).
  2. Только что описанный метод оставляет точку вставки в новом столбце, которую я не заметил, пока не пришел сюда в поисках метода перемещения выделения (только чтобы обнаружить, что он мне не нужен!).
0

В порядке,

Курсор должен находиться в строке, а диапазоны "E" и "GN" нуждаются в настройке для разных столбцов, но это экономит мне время:

Sub SelectRange()

  Dim RowNumber As Integer

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

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .