Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Ноябрь 2017, 00:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Суммирование ячеек с удалением  (Прочитано 186 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Oldsav
Новичок
*
Offline Offline

Сообщений: 4


« Стартовое сообщение: 2 Ноябрь 2017, 10:40 »

Добрый день, возникла необходимость в быстром суммировании двух ячеек с записью суммы в одну и удалением данных из другой.
Пример:
В ячейке А1 число 2;
В ячейке А2 число 2;
Удерживая горячую клавишу(например альт) кликаем по А1 затем по А2, в результате получаем в А2 сумму т.е 4, а из А1 данные удаляются.
Итог:
В ячейке А1 пусто;
В ячейке А2 число 4;
Записан
bormant
Глобальный модератор
*
Offline Offline

Сообщений: 906



« Ответ #1: 2 Ноябрь 2017, 20:02 »

Встали в A1, нажали Ctrl+X,
встали в A2, нажали Ctrl+Shift+V, выбрали справа "(*) Сложить", Enter. (При последующих вызовах эта настройка не сбрасывается, достаточно будет Ctrl+Shift+V, Enter).
« Последнее редактирование: 3 Ноябрь 2017, 09:49 от bormant » Записан

Автору на яд. Поддержать форум.
Oldsav
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #2: 3 Ноябрь 2017, 05:55 »

А можно это как то через макрос? В екселе использовал такой:
Лист1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If KeyPressed(VK_CONTROL) Then
    If Not fCell Is Nothing Then
        Target.Areas(Target.Count) = Target.Areas(Target.Count) + fCell
        fCell.ClearContents
        Set fCell = Target.Areas(Target.Count)
    End If
Else
        Set fCell = Target
End If
Application.ScreenUpdating = True
End Sub




Модуль1:
'============= Функции для определения нажатой клавиши =================================
Public Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As VirtualKeys) As Integer
Public Enum VirtualKeys    ' Virtual Keys, Standard Set
    VK_CONTROL = &H11
End Enum
'==========================================================================================
Public fCell As Range

Public Function KeyPressed(ByVal VKey As VirtualKeys) As Boolean
    KeyPressed = IIf(GetKeyState(VKey) < 0, True, False)
End Function
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 359


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 3 Ноябрь 2017, 09:00 »

О, ну это ж в Экселе...

А здесь можно просто запустить макрорекордер и записать что-то вроде
Код:
Sub AddToOther
Dim document   as object
Dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array()) ' Вырезали текущую ячейку (или несколько?)

dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By" : args2(0).Value = 1
args2(1).Name = "Sel" : args2(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2()) ' Сдвинулись вправо

rem Специальная вставка - с сложением
dim args3(4) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags" : args3(0).Value = "SVD"
args3(1).Name = "FormulaCommand" : args3(1).Value = 1
args3(2).Name = "SkipEmptyCells" : args3(2).Value = false
args3(3).Name = "AsLink" : args3(3).Value = false
args3(4).Name = "MoveMode" : args3(4).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args3())

dispatcher.executeDispatch(document, ".uno:deselect", "", 0, args3()) ' Снять выделение

End Sub
Потом пойти в Сервис - Настройка - Клавиатура и повесить этот макрос на ту же самую &H11(уж не знаю, что это обозначает, а разбираться лень)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Oldsav
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #4: 3 Ноябрь 2017, 09:47 »

записать что-то вроде

Отлично, то что нужно.
А вот как сделать что бы вместо перемещения со сложением вправо(dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2()) ' ) было перемещение в ячейку в которой установлен курсор мыши?
« Последнее редактирование: 3 Ноябрь 2017, 09:51 от Oldsav » Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 739


« Ответ #5: 3 Ноябрь 2017, 14:51 »

Ума не приложу - в каких случаях подобное поведение нужно?
Есть формулы, функции, условное форматирование. Можно просто обесцветить шрифт. Можно скрыть ненужный столбец.   
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Oldsav
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #6: 3 Ноябрь 2017, 15:47 »

Ума не приложу - в каких случаях подобное поведение нужно?
Есть формулы, функции, условное форматирование. Можно просто обесцветить шрифт. Можно скрыть ненужный столбец.   
Ненужный столбец скрыть невозможно, а вот данные из одной ячейки нужно переместить в другую без потери последней. Те сложить данные: пример есть круг ф20ст3; и есть круг ф20ст20, нужно нормы с первого перекинуть на второй, но во втором тоже есть данные и они не должны потерятся. Тк материалы взаимозаменяемые
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!