Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Berechnung manuell;nach F9 Taste Rechenzeit messen

Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 13:19:29
Andreas
Hallo Herber Fans,
ich suche nach einer Möglichkeit die Rechenzeit von Dateien zu erfassen. Ich entwickle an umfangreichen Dateien, die Daten konsolidieren, strukturieren und so eine Projektverfolgung ermöglichen. Um den Einfluß von Formeln auf die Rechenzeit zu ermitteln, arbeite ich zum Teil ich mit einem Makro "GetTickCount".
Das funktioniert auch. Das Makro erkennt, ob etwas geändert wurde (außer Gruppierungen) und berechnet.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
lngTime = GetTickCount
Sh.Calculate
MsgBox "Zeit: " & (GetTickCount - lngTime) / 1000 & " Sekunden"
End Sub


Nun möchte ich aber die Rechenzeit ermitteln, nachdem ich F9 gedrückt habe? Die Berechnung ist also auf manuell gestellt und soll unabhängig von der Makro Prüfung, ob etwas geändert wurde oder nicht, erfolgen.
Vielen Dank für Eure Ideen und Anregungen.
Grüße, Andreas Hanisch

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 15:13:00
Wolli
Hallo Andreas,
Nur zwei Punkte, die mir dazu durch den Kopf schwirren:
1.) Auch F9 rechnet in der Regel nur das, was gerechnet werden muss, es werden also nicht zwangsläufig alle Zellen berechnet.
2.) mit der Calculate- und/oder CalculateFull-Methode kannst Du innerhalb eines Makros die Berechnung auslösen, damit müsstest Du dann die Zeit auch messen können, oder?
Gruß, Wolli

AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 15:27:00
Andreas
Hallo Wolli,
mit der Calculate bzw. Calculate Full Methode setze ich mich noch auseinander. Der Effekt soll sein, daß ich eine automatische Zeitmessung ab Drücken von F9 habe.
Also ein Makro daß erkennt. "aha, F9 wurde gedrückt, bzw. Berechnung startete, Uhr läuft, nach Beendigung der Berechnung Ausgabe der Sekunden in einer Messagebox".
Das Makro soll die Berechnung also nicht auslösen, sondern "nur" erkennen, daß sie läuft. Komplett losgelöst von dem von mir geposteten Makro Ansatz. Viele Befehlszeilen können das doch nicht sein, oder?

Anzeige
AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 15:38:00
Wolli
Ich behaupte mal (ohne es sicher zu wissen), dass es nicht möglich ist, durch das Drücken von F9 ein Makro zu starten. Aber vielleicht hilft Dir das Calculate-Ereignis im Arbeitsblatt?

Private Sub Worksheet_Calculate()
End Sub


Oder Sheet_Calculate im Workbook?


Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
End Sub


Das Ereignis tritt ein, wenn das Blatt / ein Blatt neu berechnet wird.
Außerdem: Du willst im Endeffekt ja die Zeit messen, die Deine Tabelle zum neuberechnen braucht. Geht das nicht am exaktesten, wenn Du ein Makro schreibst, das die Berechnung selbst auslöst? Du könntest sogar ein Makro schreiben, das die Tabelle 100x in Folge berechnet, so dass Du die Dauer mitteln / genauer bestimmen kannst.
Ich lasse die Frage nochmal offen, vielleicht weiß jemand anderes mehr.
Gruß, Wolli

Anzeige
AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 16:02:59
Andreas
Hi Wolli,
so in etwa?
'Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim lngStart As Long, lngEnd As Long

Private Sub Worksheet_Calculate()
lngStart = GetTickCount
lngEnd = GetTickCount
MsgBox "Dauer in Millisekunden: " & lngEnd - lngStart, , "Gebe bekannt..."
End Sub


Nachdem ich das Option Explicitauskommentiert habe, lief das Makro durch, gab auch eine Message Box, jeodch mit Millisekundenwert 0 für eine Zeitspanne die laut Handy Stoppuhr knapp über 3 Sekunden lag.
Eingefügt ist dieses Makro in "Tabelle1" einer Datei. Nicht in "Diese Arbeitsmappe" oder einem Modul. Woranl liegt es, daß kein Wert kommt?
Dank und Gruß,
Andreas

Anzeige
AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 16:11:00
K.Rola
Hallo,
so könnte es gehen(ungetestet):
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim lngStart As Long, lngEnd As Long

Private Sub Worksheet_Calculate()
lngStart = GetTickCount
If Application.CalculationState = 0 Then
lngEnd = GetTickCount
MsgBox "Dauer in Millisekunden: " & lngEnd - lngStart, , "Gebe bekannt..."
End If
End Sub


Gruß K.Rola

AW: Berechnung manuell;nach F9 Taste Rechenzeit messen
10.10.2007 19:46:00
Andreas
Hi K.Rola,
ich habe Deinen VBA Code eingefügt, aber nichts tut sich. Zum besseren Verständnis habe ich nun eine Beispieldatei erstellt. Sie zählt für 2.000 Zeilen die Werte ohne Duplikate mittels Array Formeln. Das sorgt für ein wenig Rechenzeit um das Makro testen zu können.
https://www.herber.de/bbs/user/46667.xls
Vielleicht kannst Du anhand der Datei erkennen, warum es nicht läuft. Ich habe es in verschiedenen Versionen (auskommentierungen) getestet, aber nicht einmal eine Fehlermeldung habe ich bekommen.
Dank und Gruß,
Andreas Hanisch

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige