Zdravím,
jsem trochu zaskočen podivným chováním makra :
Sub Main
dim oSesit as Object
dim oSheet as Object
dim oCell as Object
dim oDataSheet as object
oSesit = ThisComponent
if oSesit.getSheets.hasByName( "Data" ) Then
oSheet = oSesit.getSheets.getByName( "Data" )
else
MsgBox " List 'Data' nenalezen", 0
EndIf
oColumn = oSheet.Columns(0)
last_row = num_rows( oSheet )
oCell = oSheet.getCellByPosition( 15, 0 )
oCell.setValue( num_rows )
End Sub
Function num_rows( oCurSheet ) as variant
dim oColumn as Object
dim oColumns as Object
oColumns = oCurSheet.getColumns()
oColumn = oColumns.getByIndex(0)
oFinder = oColumn.createSearchDescriptor
oFinder.searchRegularExpression = true
oFinder.SearchString = "."
oResult = oColumn.FindAll(oFinder)
If Not IsNull(oResult) then
ResultName$ = oResult.AbsoluteName
PartsOfTheName = Split(ResultName,"$")
num_rows = Val(PartsOfTheName(ubound(PartsOfTheName))) - 1
Else
num_rows = - 1
End If
End Function
Takže smysl byl najít poslední řádek na listu "Data", který má nějakou hodnotu v sloupci A (0).
Po zadefinování oDoc, oSheet jsem volal funkci, která mi měla vrátit číslo posledního platného řádku.
skript stále končí hláškou "argument není volitelný" na druhém řádku ve funkci num_rows ( oColumns = oCurSheet.getColumns() )
Nechápu, kde je problém, objekty normálně do funkcí předávám ( v jiných sešitech ) .. proto jsem vložil do procedury Main v podstatě stejný kód před voláním funkce num_rows .. a tam to nevyhnije !!
Díval jsem se přes kukátko, a oCurSheet JE objektem listu, má i sorávný atribut "name"... a přesto se chová jinak než původní předaná proměnná.
Už jsem asi překoukaný, protože nikde chybu nevidím, ale přece tam někde musí vězet ...
díky za nakopnutí
Milan
Editoval MilanUhrak (8. 8. 2018 07:11:12)