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

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

18 Июнь 2021, 16:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Пол: Женский
Сообщений: 11


« Стартовое сообщение: 18 Май 2021, 16:28 »

Уважаемые умельцы! Прошу Вашей помощи!
Допиливаю макрос (из разных .txt собираю отчет), встала на такое ерунде, что стыдно, но без Вашей помощи мне не обойтись, да и подучиться некоторым вещам полезно.
Есть таблица, в ней строки с заполненными ячейками, адреса ячеек всегда разные
Пример:
С19 = Итого:, E19 = сумма
С20 = Итого1, F20 = сумма
С21 = Итого:, G21 = сумма
Нужно переместить содержимое ячеек F20, G21 соответственно в ячейки F19, G19
И удалить строки с Итого1 и Итого2 (но это уже проще)
Как преобразовать getCellByPosition(5, 17) в getCellByName("F18") не нашла.

Если можно, то подскажите мне, пожалуйста, сразу несколько вариантов перемещения ячеек

пыталась выйти из положения подпорками, но не вышло
Сильно не смейтесь  Да уж...

Sub Main1____poigrat'
dim FandR As Object
Dim oSheet         'объект листа
Dim oCellRange      'объект диапазона ячеек
Dim oDataArray      'массив массивов данных диапазона
Dim oCell         'объект ячейки
oDoc=ThisComponent
oSheet =oDoc.Sheets.getByName("32_ОРГ_1251")
oCol = oSheet.getCellRangeByName("C8:G50")
FandR=oSheet.createSearchDescriptor
With FandR
.SearchString= "Итого1"
End With
oCell=oCol.findFirst(FandR)
oCell=oSheet.findFirst(FandR)
'z1=oCell.CellAddress.Column '
z=oCell.CellAddress.Row '(18)
i=5    'column - 5 - F
k=z+1 ' row - 19+1 - получаем F20
'Print z
'Print k
w = "F" + k 'F20
'oCell=oSheet.getCellByPosition(i, z)
'w= oCell.getValue
Print w
oRangeAddress = oSheet.getCellRangeByName("F20:F20").getRangeAddress()
'oRangeAddress = oSheet.getCellRangeByName("сюда хотела вставить w, но болты Грустный D21:D21").getRangeAddress()
oCellAddress = oSheet.getCellByPosition(5, 18).getCellAddress() 'F19
oSheet.moveRange(oCellAddress, oRangeAddress)
End Sub

 

Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #1: 18 Май 2021, 22:08 »

Здравствуйте

Заключайте пожалуйста тексты макросов в теги
Код:
кнопочка с "решеткой"
Предлагаю макрос решающий Ваш вопрос "в лоб" простым перебором ячеек
 

Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Atlant_50
Участник
**
Offline Offline

Пол: Женский
Сообщений: 11


« Ответ #2: 19 Май 2021, 09:01 »

Огромное спасибо! Вы меня очень выручили! Веселый Всё хорошо
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 495


« Ответ #3: 19 Май 2021, 10:11 »

Нужно переместить содержимое ячеек F20, G21 соответственно в ячейки F19, G19
И удалить строки с Итого1 и Итого2 (но это уже проще)
Как преобразовать getCellByPosition(5, 17) в getCellByName("F18") не нашла.

Если вверху самого верхнего макроса написать
Код:
Option VBASupport 1
Option Compatible
- появляется возможность писать на VBA, в котором есть удобный краткий синтаксис (короче некуда). Для перестановок удобно:
Код:
[F19]=[F20]
[G19]=[G21]
[C19]=""
' имена могут быть не только A1, но и именами диапазонов. Вот еще полезные команды
[имядиапазона].ClearContents
[имядиапазона].ClearFormats
[имядиапазона].ClearComments
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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