ich habe eine Frage zur Geschwindigkeit von SC 5.1 in Verbindung mit
Starbasic.
Bei einer importierten excel-Tabelle (sämtliche makros und Programme
in Starbasic umgeschrieben uffff ;-)) ) laufen diese EXTREM langsam.
Bsp: Tabelle innerhalb eines Dokuments kopieren ca. 3 sec, ca. 200
zahlenwerte/textinhalte von der ersten in die zweite Tabelle kopieren
dauert ca. 1 min (excel ca. 5sec) auf P166/72MB, bei P400/64MB
immerhin noch ½ min
beispielmacro:
es kopiert aus tabelle 1 daten in tabelle 2 (7 Tabellenfelder werden
gelesen/geschrieben)
i=zeilennr. erste tabelle
e=zeilennr. zweite tabelle
sub zeileausfuellen
monat=celltext(6,i,1)
anummer=celltext(4,i,1)
putCell(1,e,activetable.index,kundenname) 'k-name in tabelle
erlöse
putCell(4,e,activetable.index,monat) 'monat in tabelle erlöse
putcell(3,e,activetable.index,anummer) 'auftragsnummer
Betragre=cells(7,i,1).value 'betrag in Tabelle1
If betragre<0 then 'EK
Betragls=cells(6,e,2).value 'Betrag in Tabelle2
putCell(6,e,activetable.index,betragls+betragre)
end if
end sub
Frage nun: gibt es tuning im Bereich der Befehle putcell,cells,
celltext, oder muß man bestimmte Optionen zur
Geschwindigkeitsverbesserung der Macros in SC einstellen??
Ich weiß, die Frage(n) sind vielleicht nicht an die richtige Adresse
gestellt, aber ich bin neu im Bereich newsforen und für tipps dankbar.
In meiner Fa. (5 Rechnerplätze) habe ich vor, die vorhandene
SmallBusinessEdition5.1 zum Arbeiten und nicht zum Warten auf
Ergebnisse einzusetzen. Da das Officepaket mich eigentlich überzeugt
(seit SO3.1) mache ich die Entscheidungsfindung (SO5.1 / MSO2000)
abhängig von der Verarbeitungsgeschwindigkeit (der macros, da diese
sowohl beim SW als auch SC eine große Rolle im Arbeitsablauf spielen).
Grüße von (ist jetzt auf Weinfest 8-; ...)
Andy
end sub
Hallo Andreas,
ich habe dein Beispielmakro(leicht abgewandelt-siehe unten) bei mir
getestet (Windows95;SO 5.0; P166MMX /64MB) und komme dabei für 100
Durchläufe auf ca. 8 Sekunden, also kein schlechter Wert.
Das Zeitverhalten ändert sich auch nicht, wenn die aktive Tabelle eine
andere als Tabelle 2 ist.Es scheint einen anderen Bremser zu geben.
'Beispiel-Makro (abgewandelt)
sub zeileausfuellen
' i=zeilennr. erste tabelle
' e=zeilennr. zweite tabelle
i = 1
e = 5
For x = 1 To 100 ' 100 Durchläufe
monat=celltext(6,i,1)
anummer=celltext(4,i,1)
kundenname = celltext(2,i,1) ' ???
putCell(1,e,activetable.index,kundenname) 'k-name in tabelle erlöse
putCell(4,e,activetable.index,monat) 'monat in tabelle erlöse
putcell(3,e,activetable.index,anummer) 'auftragsnummer
Betragre=cells(7,i,1).value 'betrag in Tabelle1
If betragre<0 then 'EK
Betragls=cells(6,e,2).value 'Betrag in Tabelle2
putCell(6,e,activetable.index,betragls+betragre)
end if
putCell(9,e,activetable.index,x) ' Anzahl Durchläufe anzeigen
next
end sub
Gruß Siegfried
> Bei einer importierten excel-Tabelle (sämtliche makros und Programme
> in Starbasic umgeschrieben uffff ;-)) ) laufen diese EXTREM langsam.
> Bsp: Tabelle innerhalb eines Dokuments kopieren ca. 3 sec, ca. 200
> zahlenwerte/textinhalte von der ersten in die zweite Tabelle kopieren
> dauert ca. 1 min (excel ca. 5sec) auf P166/72MB, bei P400/64MB
> immerhin noch ½ min
Beobachte doch mal, ob die Warterei mit heftiger Plattenaktivität
verbunden ist. SC braucht hin und wieder extrem viel Speicher (z.B.
beim Löschen von Spalten o.ä.) für die Rückgängig-Funktion. Bei mir
hat es schon sehr viel geholfen, diese zu Beginn eines Makros zu
deaktivieren, und zum Schluss wieder zu aktivieren:
' alte Anzahl Schritte speichern
UndoCount = Application.UndoCount
Application.UndoCount = 0
' hier tust du was
...
' Undo wieder aktivieren
Application.UndoCount = UndoCount
--
Michael
----------------------------------------------------------------------
http://www.jo-sac.ch/lindenberg - die JO des SAC Lindenberg online
http://www.teamstaroffice.org - Team StarOffice - the user group