[Excel 2019] Как переместить выделенные строки в определённое место?

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 324
Реакции
7 870
Как сделать перенос выделенных строк выше или ниже? Про зажим SHIFT и ручками вверх и вниз то понятно, но это муторно, когда надо на несколько сотен строк вниз/вверх перегнать несколько выделенных строк же.

Нет ничего типа шотката и там выбрать вверх/вниз и на какую именно строчку вниз (не перезаписать, а именно передвинуть).
 

Drawer

Участник
Сообщения
1 816
Реакции
799
Верный ответ
Код:
Sub MoveCells()
    Dim rm As String
    rm = InputBox(prompt:=p, Title:="Переместить на место перед строкой:")
    If Not IsNumeric(rm) Then
        MsgBox "Введенный номер строки некорректен.", vbCritical
        Exit Sub
    End If
   
    Set rng = Selection
    ' Проверка, что выделены ячейки
    If rng Is Nothing Then
        MsgBox "Выделите ячейки для перемещения.", vbCritical
        Exit Sub
    End If
   
    ' Проверка, что номер строки в диапазоне допустимых значений
    If rm < 1 Or rm > Rows.Count Then
        MsgBox "Некорректный номер строки.", vbCritical
        Exit Sub
    End If
    Selection.Cut
    Cells(rm, rng.Column()).Select
    Selection.Insert Shift:=xlDown
End Sub
 
Последнее редактирование модератором:
  • Спасибо
Реакции: George

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 324
Реакции
7 870
Последнее редактирование:

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 324
Реакции
7 870
И всё же оно. Основное, что надо делать - надо именно выделять строки левой кнопкой мыши по номерам строк, которые надо потом переместить и потом CTRL+X, а не как я делал SHIFT+SPACЕ и затем CTRL+X.

Странная гадина, SHIFT+SPACE это же выделение строк и есть, шоткат на это... Но с ним не работает как надо (поверх копипастит собака бешеная).
 
Последнее редактирование:

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 324
Реакции
7 870
Код:
Sub MoveCells()
    Dim rm As String
    rm = InputBox(prompt:=p, Title:="Переместить на место перед строкой:")
    If Not IsNumeric(rm) Then
        MsgBox "Введенный номер строки некорректен.", vbCritical
        Exit Sub
    End If
   
    Set rng = Selection
    ' Проверка, что выделены ячейки
    If rng Is Nothing Then
        MsgBox "Выделите ячейки для перемещения.", vbCritical
        Exit Sub
    End If
   
    ' Проверка, что номер строки в диапазоне допустимых значений
    If rm < 1 Or rm > Rows.Count Then
        MsgBox "Некорректный номер строки.", vbCritical
        Exit Sub
    End If
    Selection.Cut
    Cells(rm, rng.Column()).Select
    Selection.Insert Shift:=xlDown
End Sub
Это удобнее родного способа. Спасибо отдельно!
 

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 324
Реакции
7 870
@Drawer
А доработать, чтобы можно было перемещать несколько выделенных в разных местах строк в одно место сможешь?

;]]


Snag_7584e6.png