Code: Alles auswählen
oProgressBar = oDoc.getFrame().createStatusIndicator()
oProgressBar.start( "", 10)
oProgressBar.setText("Reading ...")
Moderator: Moderatoren
Code: Alles auswählen
oProgressBar = oDoc.getFrame().createStatusIndicator()
oProgressBar.start( "", 10)
oProgressBar.setText("Reading ...")
Diese Makro braucht sehr lange
Code: Alles auswählen
Sub langsam()
for i = 0 To 49999
If da =ThisComponent.Sheets(0).getCellByPosition(0,i).Value = 23.456 Then
Msgbox "Wert gefunden in Zelle A" & (i+1)
Exit Sub
End If
Next i
End Sub
Code: Alles auswählen
Sub schnell()
da =ThisComponent.Sheets(0).getCellRangeByName("A1:A50000").getDataArray()
for i = Lbound(da()) To Ubound(da())
db() = da(i)
If db(0) = 23.456 Then
Msgbox "Wert gefunden in Zelle A" & (i+1)
End If
next i
End Sub
Warum nutzt Du nicht einen nichtmodalen Dialog, z.B.:Gibt es dafür eine eigene Funktion
Code: Alles auswählen
Sub status()
warten_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
warten_model.setPropertyValue("Width", 150) '343
warten_model.setPropertyValue("Height", 20)
warten_model.SetPropertyValue("Title","Bitte etwas Geduld")
oMod_warten = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten
.setPropertyValue("Name","warten1")
.setPropertyValue("PositionX",5) '192
.setPropertyValue("PositionY",5)
.setPropertyValue("Width",140)
.setPropertyValue("Height",13)
.setPropertyValue("Label","Formatierung wird gelesen ...")
End With
warten_model.insertByName("warten1", oMod_warten)
warten_dialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
warten_dialog.setModel(warten_model)
oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
warten_dialog.createPeer(oWin2, null)
warten_dialog.setVisible(True)
for i = 0 To 50000 Step 10
warten_dialog.Model.getByName("warten1").Label = i & " Werte verglichen"
next i
warten_dialog.setVisible(False)
End Sub
Stephan hat geschrieben:Du weist aber wie Du ein solches Makro effizient implementierst?
Sieht interessant aus, zumal die Progressbar in der Statuszeile nicht sehr stabil läuft. Werde ich mal ausprobieren.Warum nutzt Du nicht einen nichtmodalen Dialog, z.B.:
das ist dann völlig in Ordnung, einzig hatte ich das nicht erwartet, weil ich nicht wirklich verstehe wozu Du eine Fortschrittsanzeige brauchst, denn ich nehme an die Implementierung über Suchen ist ebenfalls sehr schnell, möglicherweise noch schneller als mein Vorschlag, Letzterer brauchte aber bei mir nur 1 Sekunde, auf eher älterer Hardware.Ich verwende dafür einen SearchDescriptor
Ich habe Deinen Dialog eingebaut und bin begeistert. Genau so hatte ich es mir vorgestellt. Vielen Dank.Stephan hat geschrieben:Warum nutzt Du nicht einen nichtmodalen Dialog, z.B.:
Stephan