База Знаний: Программирование. StarBASIC. Calc. Выделение и копирование нескольких строк на листе
From Wiki
Jump to navigationJump to search
Материал для этой статьи сформулирован на основе обсуждения
в community.i-rs.ru.
Данный пример кода выполняет поиск от текущей позиции далее «вниз» по листу:
FUNCTION getRowRange(idxSheet, sRow, eRow) as com.sun.star.table.CellRangeAddress
RangeAddr = createUnoStruct( "com.sun.star.table.CellRangeAddress" )
with RangeAddr
.Sheet = idxSheet
.StartColumn = 0
.StartRow = sRow
.EndColumn = 255
.EndRow = eRow
end with
getRowRange() = RangeAddr
END FUNCTION
' копирование строк
' idxSheet - индекс листа
' sRow - нач. строка копируемого диапазона
' eRow - кон. строка копируемого диапазона
' iRow - куда копируется
' How - сколько строк
SUB CopyRows(idxSheet, sRow, eRow, iRow, How)
' vars
Dim Doc, Sheet as object
CellAdr = createUnoStruct( "com.sun.star.table.CellAddress" )
' sub body
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByIndex(idxSheet)
RowRange = getRowRange(idxSheet, sRow, eRow)
for i = 1 to How
with CellAdr
.Sheet = idxSheet
.Column = 0
.Row = iRow + (i-1)
end with
if (iRow >= eRow) and (iRow <= eRow) then
RowRange = getRowRange(idxSheet, sRow + (i-1), eRow + (i-1))
end if
Sheet.CopyRange(CellAdr, RowRange)
next i
END SUB