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

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

19 Январь 2021, 20:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Замена ячеек местами  (Прочитано 567 раз)
0 Пользователей и 1 Гость смотрят эту тему.
W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Стартовое сообщение: 3 Январь 2021, 16:27 »

Есть ли способ быстрой замены содержимого ячеек местами? Не рядом стоящих, а сильно разнесенных между собой
Записан
eeigor
Ubuntu 18.04 LTS • LO 7.0.2.2
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 269



« Ответ #1: 3 Январь 2021, 16:43 »

Если вы используете Basic, то обмен значениями произведите с использованием временной переменной. Python позволяет это сделать зараз.
Записан
W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Ответ #2: 3 Январь 2021, 17:06 »

Basic
А где можно поискать информацию, я никогда не сталкивался с макросами, пока очень сложно даётся... Причем смотрю на exel, хоть что то понятно в отличии от oo
Записан
rami
Гуру
*******
Online Online

Пол: Мужской
Сообщений: 3 050


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 3 Январь 2021, 17:38 »

Опишите подробней, что вы хотите сделать.
Записан

W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Ответ #4: 3 Январь 2021, 17:56 »

В документе очень часто требуется поменять содержимое ячейки а1 на а500 например, между ними большое расстояние, хотелось бы выделить две и поменять
Записан
rami
Гуру
*******
Online Online

Пол: Мужской
Сообщений: 3 050


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 3 Январь 2021, 18:37 »

Этот макрос поменяет местамо содержимое ячеек A1 и A500:
Код:
Sub Main
Dim oSheet, Cell1, Cell2, tempdata
oSheet = ThisComponent.Sheets(0)
Cell1 = oSheet.getCellRangeByName("A1")
Cell2 = oSheet.getCellRangeByName("A500")
tempdata = Cell1.String
Cell1.setString(Cell2.String)
Cell2.setString(tempdata)
End Sub
Записан

W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Ответ #6: 3 Январь 2021, 18:40 »

Я даже не знаю как оправдаться за то что остался не так понят, ведь имел я ввиду, что не только а1 на а500 буду менять, а такие ячейки, которые выберу произвольно...
Записан
rami
Гуру
*******
Online Online

Пол: Мужской
Сообщений: 3 050


iMac, LibreOffice и Apache OpenOffice


« Ответ #7: 3 Январь 2021, 19:04 »

Тогда так (сначала выбрать две ячейки, затем выполнить макрос):
Код:
Sub Main
Dim oSel, Cell1, Cell2, tempdata
oSel = ThisComponent.CurrentSelection
Cell1 = oSel.getByIndex(0)
Cell2 = oSel.getByIndex(1)
tempdata = Cell1.String
Cell1.setString(Cell2.String)
Cell2.setString(tempdata)
End Sub
Записан

W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Ответ #8: 3 Январь 2021, 19:06 »

Спасибо!!!
Записан
rami
Гуру
*******
Online Online

Пол: Мужской
Сообщений: 3 050


iMac, LibreOffice и Apache OpenOffice


« Ответ #9: 4 Январь 2021, 09:31 »

Для общего случая (выбирать любые две ячейки):
Код:
Sub Main
Dim oSel, Cell1, Cell2, tempdata, oData
oSel = ThisComponent.CurrentSelection
If oSel.supportsService("com.sun.star.sheet.SheetCellRanges") Then
Cell1 = oSel.getByIndex(0)
Cell2 = oSel.getByIndex(1)
If Cell1.supportsService("com.sun.star.sheet.SheetCell") And Cell2.supportsService("com.sun.star.sheet.SheetCell") Then
tempdata = Cell1.String
Cell1.setString(Cell2.String)
Cell2.setString(tempdata)
End If
ElseIf oSel.supportsService("com.sun.star.sheet.SheetCellRange") Then
If oSel.Columns.Count>1 Then
oData = oSel.DataArray(0)
oSel.setDataArray(Array(Array(oData(1), oData(0))))
ElseIf oSel.Rows.Count>1 Then
oData = oSel.DataArray
oSel.setDataArray(Array(Array(oData(1)(0)), Array(oData(0)(0))))
End If
End If
End Sub
Записан

W1nterdreams
Участник
**
Offline Offline

Сообщений: 10


« Ответ #10: 4 Январь 2021, 11:23 »

Спасибище!!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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