Tak jsem s tím chvíli zápasil, přece jen ty objekty v OOo nejsou moc intuitivní.
Není to moc blbuvzdorné, takže v buňce B20 na všech listech musí být číslo nikoli text, jinak to bude blbnout.
Makro je:
Sub SortSheetsByValue
Dim oSheets
Dim oSheet1 as Variant
Dim oSheet2 as Variant
Dim i As Integer
Dim swap As Boolean
oSheets = ThisComponent.Sheets
If oSheets.getCount() > 1 Then 'Sorting for more than one sheet
Do
swap = False 'We continue bubble sort passes until no more swaps
For i = 0 to oSheets.getCount()-2
oSheet1 = oSheets.getByIndex(i)
oSheet2 = oSheets.getByIndex(i+1)
Sheet1Value = oSheet1.getCellbyPosition(1,19).Value
Sheet2Value = oSheet2.getCellbyPosition(1,19).Value
If Sheet1Value > Sheet2Value Then
oSheets.moveByName(oSheets.getByIndex(i+1).Name,i)
swap = True
End If
Next
Loop Until swap = False
End If
End Sub
Praktická ukázka pak:
http://ooo.e-hanus.cz/Razeni_listu.01.ods
A chtěl jste to vlastně řadit sestupně, takže se v podmínce "If Sheet1Value > Sheet2Value Then" akotár přehodí relační operátor na <
Doplněno je to v:
http://ooo.e-hanus.cz/Razeni_listu.02.ods
Editoval hanus (3. 8. 2009 07:33:16)