Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
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
Inhaltsverzeichnis

Wie lange dauert es mein Makro auszuführen

Wie lange dauert es mein Makro auszuführen
24.07.2017 14:58:37
Jenny
Hallo,
mal eine Frage, gibt es die Möglichkeit, dass mir nachdem mein Bisheriges Makro durchgelaufen ist, in einer Message Box in Min und Sek angezeigt wird, wie lange es gedauert hat?
Viele Grüße
Jenny
PS: Das Makro wird gerade ausgeführt, wenn ihr das Makro braucht um mir zu helfen, kann ich es nach dem Ausführen gerne noch nachreichen.
Jenny

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

Betreff
Datum
Anwender
Anzeige
Makro
24.07.2017 15:09:03
Jenny
Eins noch, kann man das darauf beschränken, dass die Message Box nur erscheint, wenn vorher 10.000 oder mehr Zellen in Spalte E geändert wurden?
Weder bei weniger Zellen in Spalte E, noch bei Änderungen in Spalte G.
Gruß
Jenny
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TC As Long
Dim c As Range
Application.ScreenUpdating = False
If Target.Columns.Count > 1 Then Exit Sub
If Target.Column = 5 Or Target.Column = 7 Then TC = Target.Column Else Exit Sub
'If Target.Count = 1 And Target  "" Then
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case TC
Case 5: For Each c In Target
If c  "" Then Call SpalteE(c)
Next
Case 7: For Each c In Target
If c  "" Then
Call SpalteG(c)
Call SpalteE(c)
End If
Next
End Select
ERREXIT:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Sub SpalteG(ByVal Target As Range)
Dim r As Range, c As Range, z&, cc As Range, zf&
Dim gefunden As Boolean
If Target.Offset(, -6)  "" Then
z = Target.Row
gefunden = False
Set cc = Range("A1:A" & z - 1).Find(Target.Offset(, -6).Value, _
Range("A1"), xlValues, xlWhole)
If Not cc Is Nothing Then
zf = cc.Row
Do
Set cc = Range("A1:A" & z - 1).FindNext(cc)
If cc.Offset(, 6) = Target Then
Target.Offset(, -2) = cc.Offset(, 4) '& " " & (cc.Offset(, 4).Address)
gefunden = True
End If
Loop Until cc Is Nothing Or cc.Row = zf Or gefunden
End If
If Not gefunden Then Target.Offset(, -2).Value = "n.v."
End If
End Sub
Sub SpalteE(ByVal Target As Range)
Dim lngR As Long
lngR = Target.Row
Cells(lngR, 2).FormulaR1C1 = Cells(1, 2).FormulaR1C1
Cells(lngR, 3).FormulaR1C1 = Cells(1, 3).FormulaR1C1
Cells(lngR, 6).FormulaR1C1 = Cells(1, 6).FormulaR1C1
Cells(lngR, 8).FormulaR1C1 = Cells(1, 8).FormulaR1C1
Cells(lngR, 9).FormulaR1C1 = Cells(1, 9).FormulaR1C1
Cells(lngR, 10).FormulaR1C1 = Cells(1, 10).FormulaR1C1
Cells(lngR, 11).FormulaR1C1 = Cells(1, 11).FormulaR1C1
Cells(lngR, 12).FormulaR1C1 = Cells(1, 12).FormulaR1C1
Rows(lngR).Copy
Cells(lngR, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Target.Select
End Sub

Anzeige
AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 15:09:48
Max2
Hallo,
was macht dein Code, dass du die Zeit in Minuten und Sekunden haben willst?
Makro Codes sollten nicht länger als ein paar wenige Sekunden dauern.
Hier aber eine Möglichkeit die Zeit auszugeben:
Dim s As Double
Dim e As Double
'//Beginnt zu zählen
s = Timer
Dein Code
'//Zeit die dein Code gebraucht hat
'//jetzt zeit - zeit bei start = endzeit
'//gerundet auf 2 nachkommastellen
e = Round(Timer - s, 2)
MsgBox e
End Sub 

AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 15:12:38
Jenny
Hallo Max,
habe den Code gerade eben gepostet.
Gruß
Jenny
PS: ohne das Makro bräuchte ich ca. 100.000 Formeln in der Tabelle mit entsprechender Rechenzeit.
Das Makro berechnet die Formeln nur an den Stellen, wo sich die Ergebnisse ändern.
Mit anderen Worten ich spare einen Haufen Zeit.
Gruß
Jenny
Anzeige
AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 15:12:19
Daniel
HI
am einfachsten ist, du schreibst ein kleines Makro, mit welchem du das eigentliche Makro startest und merkst dir dort die Startzeit.
Wenn das Makro durchgelaufen ist, bildest du die Differenz von Start- und Endzeit.
dazu musst du dann dein eigentliches Makro nicht verändern.
du kannst natürlich das ganze auch in dein Makro einbauen.
dann müssen die ersten beiden Zeilen an den Anfang und die Messagebox ans Ende.
dim StartZeit as Date
StartZeit = Now
Call DeinMakro
Msgbox "Laufzeit: " & Worksheetfunction.text(Now - StartZeit, "[mm]:ss")

Wenn du die Zeit nich im Minutenbereich messen willst, sondern im Sekundenbereich und darunter, dann:
dim StartZeit as double
StartZeit = Timer
Call DeinMakro
Msgbox "Laufzeit: " & Timer - StartZeit
Timer ergibt die Sekunden seit Mitternacht.
Gruß Daniel
Anzeige
AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 15:36:09
Dieter(Drummer)
Hallo Jenny,
hier noch eine Variante mit Sprachausgabe:
Code von Herber: von Nepumuk am 21.06.2016 19:14:19, Mx: geändert, 22.06.2016
Option Explicit
Sub MakroLaufzeitOhneStd()
Dim dtmStart As Date, dtmEnd As Date
Dim intMinute As Integer, intSecond As Integer
dtmStart = Time
'Deine Code
dtmEnd = Time
intMinute = Minute(dtmEnd - dtmStart)
intSecond = Second(dtmEnd - dtmStart)
Application.Speech.Speak ("Laufzeit des Makros war") & _
IIf(intMinute  0, IIf(intMinute = 1, "eine Minute", CStr(intMinute) & "Minuten"), "")  _
& _
IIf(intSecond  0, IIf(intSecond = 1, "eine Sekunde", CStr(intSecond) & "Sekunden"), "" _
) & _
IIf(intSecond = 0, "unter einer Sekunde", ""), True
End Sub

Gruß, Dieter(Drummer)
Anzeige
AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 15:54:16
Jenny
Hallo an euch alle,
ich bin leider noch etwas ratlos, an welche Stelle ich das in mein Makro einbauen soll. Da das eigentliche Makro ja durch ein Worksheet Change gestartet wird und es ja eigentlich nur den Case 5 betreffen soll.
Gruß
Jenny
AW: Wie lange dauert es mein Makro auszuführen
24.07.2017 16:04:02
Daniel
wie gesagt:
du musst dir die Startzeit zu beginn des Makros in eine Variable speichern.
am Ende des Makros bildest du dann die Differenz zwsichen aktueller und Startzeit und gibst dann diese aus.
Wenn die Zeit nur dann ausgeführt werden soll, wenn Spalte 5 geändert wurde, musst du eine weiter Variable vom Typ boolean anlegen.
Diese setzt du dann auf TRUE, wenn die Zeile 5 bearbeitet wurde (dies kannst du im Teil des Select Case machen, welches du schon hast.)
am ende fragst du dann diese Variable ab, und gibst die Msgbox nur aus, wenn diese Variable = True ist.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige