Цикл по диапазону ячеек листа

Автор Fiona, 3 июня 2020, 10:50

0 Пользователи и 1 гость просматривают эту тему.

Fiona

Сегодня при переписывании кода появилась новая проблема.
В исходном коде VBA было так:
***************
' на листе Info этой книги должны быть указаны листы, которые нужно корректировать
For Each x In ThisWorkbook.sheets("Info").Range("A6:Z6")
  If period = x.Value Then i = x.Column: Exit For
  If x.Value = "" Then Exit For
Next
***************
Оказалось, что в LO getCellRangeByName("A6:Z6") это массив данных. Голову сломала, как мне обратиться к ячейкам, чтобы найти нужный период. Или нужно вернуться к https://opengrok.libreoffice.org/xref/core/sc/inc/cellsuno.hxx?r=32ff26f7#767 и дочитать до конца?

mikekaganski

#1
Цитата: Fiona от  3 июня 2020, 10:50Оказалось, что в LO getCellRangeByName("A6:Z6") это массив данных.

Это не совсем корректно. На самом деле результат - это объект ScCellRangeObj, который опять может давать доступ к своим поддиапазонам или к массивам данных, формул и т.п.

 r = ThisComponent.Sheets(0).getCellRangeByName("A6:Z6")
 For col = 0 To r.Columns.Count - 1
   cell = r.getCellByPosition(col,0)
   If cell.Value = period Then i = cell.CellAddress.Column : Exit For
   If cell.String = "" Then Exit For
 Next col
С уважением,
Михаил Каганский

Fiona

Супер! Как, оказывается, все просто и изящно... Спасибо, Михаил! :)
У меня сложилось впечатление, что за неимением времени я начала не с того конца освоение LO... :roll:

sokol92

#3
Дополнение к ответу Михаила #1.
Для пробежки по непустым ячейкам диапазона(ов) можно использовать другой подход. Выделите несколько (небольших) диапазонов на листе и выполните макрос:

Sub TestGetCells
 Dim oRange, oEnum, oCell, s
 oRange=ThisComponent.CurrentSelection
 oEnum=oRange.getCells.createEnumeration()
 While  oEnum.hasMoreElements
   oCell=oEnum.nextElement
   s=s & oCell.AbsoluteName & chr(10)
 Wend
 Msgbox s,,"Выделены непустые ячейки"  
End Sub


Не думаю, что изучение алгебры LO нужно начинать с теории Галуа исходных текстов программ.

У меня уже стаж самообучения целых 2 месяца (!), я начал с чтения книги А.Питоньяка OOME_4_0.odt, изучения документации по сервисам и интерфейсам. Полезным оказалось сделать сопоставительную таблицу между свойствами/методами объектов Excel (с которыми у меня давнее знакомство) и аналогами в LO.
Владимир.

Fiona

Спасибо, в этом вся и проблема... Я до мая и VBA не интересовалась - вот и  приходится все налету хватать.