Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
284to288
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
284to288
284to288
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diskussionsfrage

Diskussionsfrage
28.07.2003 10:08:13
PeterB
Hallo Phorum,
ich habe mal eine kleine Diskussionsfrage: es wurde hier ja schon oft gefragt, wie man die Berechnung von Makros und VBA-Codes beschleunigen könnte. Als Tips werden i.A. gegeben, die Bildschirmaktualisierung etc. auszuschalten.
Nun habe ich folgendes festgestellt:
ich habe eine aus 3 Dateien bestehende "Software", in der alle Daten cross-verlinkt sind und bei Änderung eines Datensatzes ein ganzer Rattenschwanz Berechnungen nachhängt. Das dauert i.d.R. so 20 Minuten.
Wenn ich die Bildschirmaktualisierung abschalte, funktioniert die Berechnung nicht mehr fehlerfrei. (mach ich was falsch???)
Die Dauer geht aber nur minimal zurück.
Meine Frage ist, wie kann man (sicher!) seine Makros und Codes beschleunigen, ohne den Code unportierbar zu machen (das soll er ja sein und bleiben) und ohne einen Einfluß auf die Ergebnisse zu nehmen, UND
warum spinnt Excel??? -wenn ich nur die Spaltenbreite ändere will er trotzdem alles neu berechnen (ich erinnere: 20 min.), und wenn ich das mit Escape abbreche oder einfach weiterschreibe, dreht er hohl und rechnet wie wild drauflos. Will Excel manisch rechnen, oder wie? (war ne scherzfrage, aber wenn jemand weiss, wie die obere frage zu beantworten ist, bin ich für hilfe echt dankbar)
greetz peter

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diskussionsfrage
28.07.2003 10:13:13
Nike
Hi,
ich will mal damit anfangen
das bei deiner Frage die XL Version nicht ohne Relevanz ist.
E97 ist nicht so stabiel wie 2000.
Zusätzlich müßte man deinen Code sehen.
Sind viele Selects dabei wird der Code automatisch langsamer
da hilft es auch nicht den Monitor auszuknipsen ;-)
ansonsten müßte man deinen Code noch weiter analysieren um zu schauen,
was sich wo optimieren lassen könnte.
Am meisten Zeit brauchen eigentlich Seitenformatierungen und selects bzw.
activates...
Bye
nike

AW: Diskussionsfrage
28.07.2003 10:23:05
PeterB
oki, also: ich hab ein XL aus dem office XP-paket.
aber ich hab gar nicht soooo viel VBA-code, mehr makros und zell-formeln. selects sind IMHO fast keine dabei. am meisten zeit braucht IMHO die SUMIF-funktion, wenn sie in 6 spalten durch zig1000 datensätze rennen muß, aber die bildschirmaktualisierung hat doch mit der XL-version nix zu tun, oder?
und wegen der optimierung dachte ich halt an echt allgemeingültige tips, wie man codes "tunen" könnte. weil mein code wird sich wohl dauernd ändern, und da bleibt eine optimierung nicht lange optimal :-(
greetz peter

Anzeige
AW: Diskussionsfrage
28.07.2003 10:33:57
Nike
Hi,
wenn's viele Funktionen gibt, dann wird wohl das hier
dich ein großes Stück weiter bringen:
Application.Calculation=xlCalculationManual
Das stellt die Berechnung auf manuell, da du die Funktionen ja nur
ein mal berechnet haben mußt und nicht immer wieder bei jedem Ereignis.
Brauchst du ne Neuberechnung, dann stellst du sie gezielt ein, mit
Application.Calculate
am Ende dann halt wieder
Application.Calculation=xlCalculationAutomatic
Bye
Nike

AW: Diskussionsfrage
28.07.2003 10:42:33
PeterB
danke für den tipp, aber ich weiss nicht, ob ich ihn brauchen kann, weil ich einen "update-gnopfn" habe und absolute laien später da dran sitzen werden. wenn ich sehe, daß was schiefgeht, spring ich in den code und korrigier' das, aber die haben da keine chance.
wie gesagt sind die (bei mir) rechenintensivsten teile zellformeln mit SUMIF, und da geht dein tipp ja nicht, oder?
grüße peter

Anzeige
AW: Diskussionsfrage
28.07.2003 10:55:30
Nike
Hi,
da darf halt kein Fehler hochkommen ;-)
(on error resume next)
Und Sumif könnte man ja auch per VBA realisieren
(ggf sogar schneller, da man ja nur die Funktion ein Mal aufruft und
nicht nach jeder Berechnung noch einmal...)
VBA bietet sich im Rahmen des Update Knopfes noch um so mehr an,
aber dafür müßte man mehr von der Struktur kennen...
Bye
Nike

AW: Diskussionsfrage
28.07.2003 11:00:23
PeterB
fehler kommen beim abschalten der bildschirmaktualisierung ja keine hoch. das ist ja das problem: die berechnungen laufen, aber die ergebnisse sind falsch!
da ich fast kein VBA kann, kannst du mir mal bitte auf die sprünge helfen: wie würdest du SUMIF denn in VBA realisieren?
der knopf ist soweit ganz gut: er kumuliert die makros zum updaten und funzt gar wunderprächtig, den brauch ich nicht zu ersetzen.
grüße peter

Anzeige
AW: Diskussionsfrage
28.07.2003 11:48:48
Nike
Hi,
poste mal deine Datei (natürlich anonymisiert)
- oben die Knöpfe "Durchsuchen" und "Datei zum Server"
und dann schaun wir mal ;-)
Bye
Nike
P.S. Mal ein Beipiel:

Sub SumIf_Test()
MsgBox WorksheetFunction.SumIf(Range("A1:B2"), Range("C1"), Range("B1:B2"))
End Sub


AW: Diskussionsfrage
28.07.2003 12:03:45
PeterB
hi nike,
die dateien darf ich leider nicht posten.
anonymisieren geht nicht, das würde 3 tage dauern, um eine ähnliche aber anonyme grundlage zu schaffen.
wie muß ich dein sumif als "zellformel" schreiben?
ich hab derzeit z.b. in B2 =SUMIF('work on me'!D:F;A2;'work on me'!$F:$F)
in C2 =SUMIF('work on me'!D:J;A3;'work on me'!J:J)
vlookups dürften ja nicht besonders rechenintensiv sein, oder? die gehn recht fix...
grüße peter

Anzeige
AW: Diskussionsfrage
28.07.2003 12:24:59
Nike
Hi,
mit sumif was:

Sub SumIf_Test()
Dim wksWOM As Worksheet
Set wksWOM = Worksheets("work on me")
ActiveSheet.Cells(2, 2) = WorksheetFunction.SumIf(wksWOM.Range("D:F"), ActiveSheet.Cells(2, 1), wksWOM.Range("F:F"))
ActiveSheet.Cells(2, 3) = WorksheetFunction.SumIf(wksWOM.Range("D:F"), ActiveSheet.Cells(3, 1), wksWOM.Range("J:J"))
End Sub

Bye
Nike

AW: Diskussionsfrage
28.07.2003 13:03:19
PeterB
hi nike,
danke für die tips!!!
ich probiers mal aus und meld mich wieder (grad ist hier land unter ;-) )
aber irgendwie sieht mir das genauso aus, wie die zellformel. ist die vba-variante denn performanter???
grüße peter

Anzeige
AW: Diskussionsfrage
28.07.2003 13:18:53
Nike
Hi,
ist die vba-variante denn performanter???
Probieren geht über studieren ;-)
Rückmeldung wie das Ergebnis aussieht wäre nett.
-Ich gehe davon aus, das die VBA Variante schneller ist ;-)
Bye
Nike

AW: Diskussionsfrage
29.07.2003 16:17:51
PeterB
hi nike,
das mit deinem sumif klappt leider nicht so ganz (das ergebnis ist immer 0). hab's aber auch nur kurz ausprobiert, hab grad keine zeit zum testen. ich werd's die tage nochmal anschaun, vielleicht find ich was.
grüße peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige