7

Как можно переместить строку в другое место с помощью клавиатуры? Я нашел это руководство для мыши, но из-за инвалидности у меня проблемы с использованием мыши для этого.

Обратите внимание, что я не собираюсь «сортировать вручную», и использование дополнительного столбца «порядковый номер сортировки» не является приемлемым решением. Я знаю о превосходных способностях сортировки Калька все же.

2 ответа2

10

Чтобы переместить строку в Open Office Calc:

  1. Выберите ячейку в столбце A строки, которую нужно переместить.
  2. Нажмите Shift-Space, чтобы выделить весь ряд.
  3. Нажмите и удерживайте клавишу ALT .
  4. Перетащите строку (появляется жирная черная линия) вверх или вниз в нужное место.
  5. Если ваша работа выглядит правильно, нажмите значок Сохранить на панели инструментов.
  6. В противном случае, ALT - Z, чтобы отменить.

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

5

Я не уверен, есть ли способ "перемещать" строки с помощью клавиатуры, но использование c & p и вставка / удаление строк с помощью клавиатуры должны обеспечивать такую же функциональность:

  • перейти к первой (самой левой) ячейке строки для перемещения;
  • нажмите SHIFT+ПРОБЕЛ, чтобы выделить всю строку;
  • нажмите CTRL+C, чтобы скопировать строку;
  • нажмите CTRL+- чтобы удалить текущую строку;
  • перейти к целевой строке;
  • нажмите ALT+I, чтобы открыть меню « Insert ;
  • нажмите R, чтобы вставить новую строку (текущая строка сместится вниз);
  • нажмите CTRL+V, чтобы вставить строку на новое место.

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

Вот очень простой код для "перемещения" выделенных ячеек:

Option Explicit

Sub CopyAndCut
    ' ---------------------------------------------------------
    ' define variables
    Dim document   as object
    Dim dispatcher as Object
    Dim oSelections As Object
    ' ---------------------------------------------------------
    ' get access to the document and selections (if any)
    document    = ThisComponent.CurrentController.Frame
    oSelections = ThisComponent.getCurrentSelection()
    If IsNull(oSelections) Then Exit Sub        
    ' ---------------------------------------------------------
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
    dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
    ' -------------------------------------------------------------
    ' Check the width of the selection - if 1024 columns, we assume
    ' the complete row was selected and should get deleted
    If 1024 = oSelections.Columns.getCount() Then
        dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
    End If
End Sub

Sub InsertWithMoveDown
    ' ---------------------------------------------------------
    ' define variables
    Dim document   as object
    Dim dispatcher as object
    ' ---------------------------------------------------------
    ' get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    ' ---------------------------------------------------------
    ' Paste contents with "Move Down" option
    Dim args1(5) as New com.sun.star.beans.PropertyValue
    args1(0).Name = "Flags"
    args1(0).Value = "A"
    args1(1).Name = "FormulaCommand"
    args1(1).Value = 0
    args1(2).Name = "SkipEmptyCells"
    args1(2).Value = false
    args1(3).Name = "Transpose"
    args1(3).Value = false
    args1(4).Name = "AsLink"
    args1(4).Value = false
    args1(5).Name = "MoveMode"
    args1(5).Value = 0
    dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub

Sub InsertWithMoveRight
    ' ---------------------------------------------------------
    ' define variables
    Dim document   as object
    Dim dispatcher as object
    ' ---------------------------------------------------------
    ' get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    ' ---------------------------------------------------------
    ' Paste contents with "Move Right" option
    Dim args1(5) as New com.sun.star.beans.PropertyValue
    args1(0).Name = "Flags"
    args1(0).Value = "A"
    args1(1).Name = "FormulaCommand"
    args1(1).Value = 0
    args1(2).Name = "SkipEmptyCells"
    args1(2).Value = false
    args1(3).Name = "Transpose"
    args1(3).Value = false
    args1(4).Name = "AsLink"
    args1(4).Value = false
    args1(5).Name = "MoveMode"
    args1(5).Value = 1
    dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub

После копирования кода в пользовательскую библиотеку просто назначьте CopyAndCut , например, Alt+C , InsertWithMoveDown , например, Alt+V , и InsertWithMoveRight , например, Alt+R (все эти ярлыки по умолчанию пусты).

Теперь вы можете выделять ячейки или строки с помощью мыши или клавиатуры, вырезать их с помощью Alt+C, перемещаться к целевой ячейке и вставлять их с помощью Alt+V или Alt+R.

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