von Stephan » Di, 17.10.2017 04:50
Leider dauert der Vorgang damit noch länger als bisher. (9 Sekunden statt 6 Sekunden)
Beide Zeiten sind unfasslich lang.
Versuche das Folgende, das dauert bei mir ca. 0,4 s:
Code: Alles auswählen
Sub ausblenden_neu2()
daten = ThisComponent.sheets().getbyname("Tabelle1").getCellrangeByPosition(1,47,5,2042).getDataArray
oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
For i = 0 To UBOUND(daten())
If daten(i)(4) = "0.00" OR daten(i)(0) = "Text" OR daten(i)(4) = "xxx" Then
ii = i + 47
'ThisComponent.sheets().getbyname("Tabelle1").rows(ii).IsVisible = false
oRange = ThisComponent.sheets().getbyname("Tabelle1").getCellByPosition(0,ii)
oRanges.addRangeAddress(oRange.RangeAddress,False)
End If
Next i
ThisComponent.CurrentController.select(oRanges)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
Msgbox "Fertig"
End Sub
Gruß
Stephan
[quote]Leider dauert der Vorgang damit noch länger als bisher. (9 Sekunden statt 6 Sekunden)
[/quote]
Beide Zeiten sind unfasslich lang.
Versuche das Folgende, das dauert bei mir ca. 0,4 s:
[code]Sub ausblenden_neu2()
daten = ThisComponent.sheets().getbyname("Tabelle1").getCellrangeByPosition(1,47,5,2042).getDataArray
oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
For i = 0 To UBOUND(daten())
If daten(i)(4) = "0.00" OR daten(i)(0) = "Text" OR daten(i)(4) = "xxx" Then
ii = i + 47
'ThisComponent.sheets().getbyname("Tabelle1").rows(ii).IsVisible = false
oRange = ThisComponent.sheets().getbyname("Tabelle1").getCellByPosition(0,ii)
oRanges.addRangeAddress(oRange.RangeAddress,False)
End If
Next i
ThisComponent.CurrentController.select(oRanges)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
Msgbox "Fertig"
End Sub
[/code]
Gruß
Stephan