Сначала не хотел ради "чистоты" кода... Пока не использовал опции совместимости с VBA.
sokol92, насколько всё это стабильно работает: в смысле, не добавляет ли установка флажка каких-л. ошибок сама по себе?
И что, я должен работать (ваш пример) с моделью Excel? Или можно комбинировать код?
Upd1:
Можно, правда, "условиться" передавать левый верхний угол непрерывного диапазона, использовав минимум ссылок ( COLUMN(A2), ROW(), ... ), и ограничиться использованием листа, на котором помещена формула*, а в коде вычислить размер CurrentRegion и с работать с ним. Допустимо, как считаете? До тех пор, пока не допилят... Или переходить на модель Excel и синтаксис VBA?
* С иным листом (
SHEET(), COLUMN(A2), ROW(), ... ) могут быть тоже неведомые мне заморочки...
Function getSheet(byVal vSheet)
REM Helper for sheet functions. Get cell from sheet's name or position; cell's row-position; cell's col-position
on error goto exitErr
select case varType(vSheet)
case is = 8
if thisComponent.sheets.hasbyName(vSheet) then
getSheet = thisComponent.sheets.getByName(vSheet)
else
getSheet = NULL
endif
case 2 to 5
vSheet = cInt(vSheet)
'Wow! Calc has sheets with no name at index < 0,
' so NOT isNull(oSheet), if vSheet <= lbound(sheets) = CRASH!
'http://www.openoffice.org/issues/show_bug.cgi?id=58796
if(vSheet <= thisComponent.getSheets.getCount)AND(vSheet > 0) then
getSheet = thisComponent.sheets.getByIndex(vSheet -1)
else
getSheet = NULL
endif
end select
exit function
exitErr:
getSheet = NULL
End Function
Примечание. Код выше достаточно древний.