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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Функции для работы с диапазонами как множеством ячеек  (Прочитано 3346 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Опытный пользователь
***
Offline Offline

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


« Ответ #62276: 22 Апрель 2022, 06:42 »

2) ячейки располагаются в порядке следования диапазонов, а не в порядке их расположения на листе.
Того же результата (упорядоченного расположения ячеек) можно достичь иначе: выделением полученных диапазонов, очисткой объекта oRanges и повторным считыванием.

Код:
oRanges.addRangeAddresses(RangeAddresses(), True)  'bMergeRanges:=True
With ThisComponent
.CurrentController.select(oRanges)
oRanges.removeRangeAddresses(oRanges.RangeAddresses)
With .CurrentSelection
If .supportsService("com.sun.star.sheet.SheetCellRanges") Then
oRanges.addRangeAddresses(.RangeAddresses, False)
ElseIf .supportsService("com.sun.star.sheet.SheetCellRange") Then
oRanges.addRangeAddress(.RangeAddress, False)
End If
End With
End With

Как эффективно выделить прямоугольные диапазоны из множества ячеек и вернуть объект CellRanges вместо VBA Collection?
Тут я не прав. Проблема в объекте Cells, и предложенное решение (с использованием VBA Collection) как раз её и решает. Так что всё нормально.

Edit:
Но ячейки можно перебрать непосредственно по индексам, не обращаясь к свойству Cells (getCells).

Код:
For Each oRange In oRanges
For j = 0 To oRange.Columns.Count - 1
For i = 0 To oRange.Rows.Count - 1
oCell = oRange.getCellByPosition(j, i)
'<…>
Next i
Next j
Next oRange

Updated
« Последнее редактирование: 23 Апрель 2022, 23:27 от eeigor » Записан

Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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