Seite 1 von 1
Ausblenden beschleunigen
Verfasst: Fr, 13.10.2017 14:17
von Finger12
Habe ein Makro zum ausblenden vonZeilen mit bestimmtem Inhalt. Leider geht dies immer einige Sekunden. Gibt es eine Möglichkeit meinen Code zu "tunen"
Code: Alles auswählen
Sub Ausblenden
thisComponent.lockControllers
with thisComponent.sheets().getbyname("Tabelle1")
for zi = 47 to 2042
if .getcellbyposition(5,zi).string = "0.00" or .getcellbyposition(1,zi).string = "Text" or .getcellbyposition(5,zi).string = "xxx" then
.rows(zi).isvisible = FALSE
end if
next
end with
ThisComponent.unlockControllers
End Sub
Re: Ausblenden beschleunigen
Verfasst: Fr, 13.10.2017 22:24
von Stephan
das hier dürfte schneller sein:
Code: Alles auswählen
Sub ausblenden_neu()
daten = ThisComponent.sheets().getbyname("Tabelle1").getCellrangeByPosition(1,47,5,2042).getDataArray
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
End If
Next i
Msgbox "Fertig"
End Sub
Gruß
Stephan
Re: Ausblenden beschleunigen
Verfasst: Mo, 16.10.2017 07:22
von Finger12
Hallo Stephan
Danke für deine Lösung.
Leider dauert der Vorgang damit noch länger als bisher. (9 Sekunden statt 6 Sekunden)
Ich denke ich werde alles so lassen wie bis anhin und mich mit der Verzögerung abfinden.
Gruss
Finger12
Re: Ausblenden beschleunigen
Verfasst: Di, 17.10.2017 04:50
von Stephan
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
Re: Ausblenden beschleunigen
Verfasst: Di, 17.10.2017 07:42
von Finger12
Wow damit ist es wirklich blitzschnell.
Vielen Dank.