Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makros wahlweise mit und ohne Timer starten

Forumthread: Makros wahlweise mit und ohne Timer starten

Makros wahlweise mit und ohne Timer starten
05.07.2025 23:28:53
Christian
Hallo,

gibt es die Möglichkeit einer Schaltfläche oder so, welche mir eine Auswahl anzeigt, welches meiner 6 Makros (die einfach die Namen haben erstesMakro, zweitesMakro usw.) ich ausführen möchte und auf Wunsch auch mit einem Timer misst, wie lange das Ausführen des gewählten Makros gedauert hat?

Ist sowas möglich? Ich habe leider noch nie mit Schaltflächen gearbeitet, habe keine Ahnung wie man diese erstellt. Die 6 Makros existieren und funktionieren.

Vielen Dank
Christian
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeitmessung
06.07.2025 00:53:15
Fennek
Hallo,


sub Zeitmessung()

dim Start
start = timer

[hier der Code]

msgbox timer - start
end sub


mfg
AW: Zeitmessung
06.07.2025 15:03:38
Christian
Hallo Fennek,

danke für deine Hilfe, auch dir, Ralf.

Es war jedoch nicht mein Anliegen, ein Timer in jeden einzelnen Code einzubauen.
Sondern stattdessen eine Möglichkeit zu haben, das gewünschte Makro auszuwählen und gleichzeitig zu sagen, ob ich es mit oder ohne Timer starten soll.
Weitere Erklärungen in meiner anderen Antwort von vor ein paar Minuten

Danke
Christian
Anzeige
Die 6 Makros existieren und funktionieren
06.07.2025 09:29:04
RPP63
Moin!
Ich gehe mal (aufgrund Deiner Selbsteinschätzung) davon aus, dass die Makros nicht programmiert, sondern aufgezeichnet sind.
Wenn diese nicht "augenblicklich" abgearbeitet werden (siehe Deinen Wunsch nach Zeitmessung), solltest Du mal ein solches zeitkritisches Makro hier einstellen.
Ich bin mir sehr sicher, dass Du dann mehr lernst, als eine wahrscheinlich überflüssige Zeitmessung zu implementieren.

Gruß Ralf
Anzeige
was mir eigentlich vorschwebte, ist sowas
06.07.2025 16:41:42
Christian
Sub MakroAuswahlStarten()


Dim Auswahl As Long
Dim StartZeit As Double
Dim EndZeit As Double
Dim DauerInSekunden As Double
Dim DauerAlsZeit As Date ' Neu: Variable für die Zeitformatierung
Dim MsgResult As VbMsgBoxResult

' Menü zur Makro-Auswahl
Auswahl = InputBox("Welches Makro möchtest du ausführen?" & vbCrLf & _
"1: erstesMakro" & vbCrLf & _
"2: zweitesMakro" & vbCrLf & _
"3: drittesMakro" & vbCrLf & _
"4: viertesMakro" & vbCrLf & _
"5: fünftesMakro" & vbCrLf & _
"6: sechstesMakro" & vbCrLf & vbCrLf & _
"Gib die entsprechende Zahl ein:", "Makro-Auswahl", "1")

' Prüfen, ob eine Eingabe erfolgte und diese gültig ist
If Auswahl = 0 Then ' Abbrechen gedrückt
Exit Sub
ElseIf Auswahl 1 Or Auswahl > 6 Then
MsgBox "Ungültige Auswahl. Bitte gib eine Zahl zwischen 1 und 6 ein.", vbCritical, "Fehler bei der Auswahl"
Exit Sub
End If

' Optional: Bestätigung für Zeitmessung einholen
MsgResult = MsgBox("Möchtest du die Ausführungszeit messen?", vbYesNo + vbQuestion, "Zeitmessung")

' Zeitmessung starten, falls gewünscht
If MsgResult = vbYes Then
StartZeit = Timer
End If

' Makro basierend auf der Auswahl ausführen
On Error GoTo FehlerHandler ' Fehlerbehandlung für nicht existierende Makros
Select Case Auswahl
Case 1
Call erstesMakro
Case 2
Call ZweitesMakro
Case 3
Call drittesMakro
Case 4
Call viertesMakro
Case 5
Call fünftesMakro
Case 6
Call sechstesMakro
Case Else ' Dieser Fall sollte aufgrund der vorherigen Prüfung eigentlich nicht eintreten
MsgBox "Interner Fehler bei der Makro-Auswahl.", vbCritical
Exit Sub
End Select
On Error GoTo 0 ' Fehlerbehandlung zurücksetzen

' Zeitmessung beenden und Ergebnis anzeigen, falls gestartet
If MsgResult = vbYes Then
EndZeit = Timer
DauerInSekunden = EndZeit - StartZeit

' Konvertierung der Sekunden in ein Zeitformat
' VBA behandelt Datum/Zeit als Double, wobei 1 Tag = 1 ist.
' 1 Sekunde = 1 / (24 * 60 * 60) = 1 / 86400
DauerAlsZeit = DauerInSekunden / 86400

MsgBox "Das ausgewählte Makro wurde erfolgreich ausgeführt." & vbCrLf & _
"Ausführungsdauer: " & Format(DauerAlsZeit, "hh:mm:ss"), vbInformation, "Makro Ausführung abgeschlossen"
Else
MsgBox "Das ausgewählte Makro wurde erfolgreich ausgeführt.", vbInformation, "Makro Ausführung abgeschlossen"
End If

Exit Sub ' Normaler Ausgang

FehlerHandler:
MsgBox "Fehler beim Ausführen des Makros. Bitte stelle sicher, dass das ausgewählte Makro existiert.", vbCritical, "Fehler"

End Sub

und das Ganze dann irgendwie über eine Schaltfläche oder eine UserForm gestartet, Problem beides habe ich noch nie erstellt
Anzeige
aber ok
06.07.2025 16:58:58
Christian
das mit der Schaltfläche hab ich jetzt auch hinbekommen.

Habe jetgzt zur Abwechslung mal Copilot gefragt, in wiefern dessen Meinung nach 3 der 13 Makros durch PQ ersetzbar wären, Antwort wenn überhaupt nur sehr bedingt. Damit würde ich jetzt als Fazit es dabei belassen und bedanke mich für eure Unterstützung.

Edgar, dein Vorschlag mit der Liste der Makros werde ich trotzdem gleich noch testen und dann Rückmeldung geben.
Vielleicht bringt es mich ja noch auf weitere Ideen, wie ich das Ganze am Besten umsetze.

Gruß
Christian
Anzeige
AW: was mir eigentlich vorschwebte, ist sowas
06.07.2025 17:04:45
BoskoBiati
Hi,

ich halte es für sehr ambitioniert, mit Basiskenntnissen in Excel sowas zu starten.

Um die Abfrage automatisiert zu aktualisieren brauche ich doch wieder VBA.
Kann man in PQ einstellen!

Ansonsten denke ich, dass Du mal einen Ansatz hast, mit dem Du arbeiten kannst.

Gruß

Edgar
Anzeige
AW: was mir eigentlich vorschwebte, ist sowas
06.07.2025 17:11:51
Christian
Um die Abfrage automatisiert zu aktualisieren brauche ich doch wieder VBA.
Kann man in PQ einstellen! Das war mir jetzt neu, danke.

Aber was ich mir irgendwie immer noch nicht vorstellen kann dass ich sagen kann 1. Kopiere Daten von X nach Y, 2. lösche blatt Z, 3. aktualisiere Abfrage A, 4. Berechne Formel C, 5. aktualisiere Abfrage B, 6. speichere Datei

das war jetzt einfach wild zusammengewürfelt. Halt alles mögliche was ich gleichzeitig machen will, ohne zwischendurch nochmal eingreifen zu müssen.
Da brauche ich für Punkt 3 dann doch VBA, zumindest m.E. so war das gemeint.

Christian
Anzeige
Basiskenntnisse in Excel...
06.07.2025 17:23:37
Christian
so eine Angabe ist immer subjektiv. Ich beziehe sie auf meine gesamten Kenntnisse was Excel anbelangt. Sicherlich mir braucht niemand erklären wie ich den VBA Editor oder den PQ Editor starte, wie ich da was einfüge und klar wie viele andere auch werde auch ich in den Funktionen die man schon öfter genutzt hat Kenntnisse haben, die über die Basis hinausgehen. Denn auch wenn ChatGPT das ganze programmiert hat, ich musste ja trotzdem eine Vorahnung haben, wie das ganze ablaufen soll, damit danach auch das rauskommt was ich will. Diese Vorahnung hatte ich weil ich mich seit 2013 mit dieser Tabelle beschäftige und daher inzwischen sehr detailliert weiß, was da so von Statten geht. Aber da ich von vielem auch gar keine Ahnung habe was Excel anbelangt, weil ich es schlichtweg noch nie genutzt habe, ich nehme mal als 2 Beispiele Pivot oder Diagramme sage ich im Schnitt dass ich Basiskenntnisse habe. Aber wie gesagt dass ist eine subjektive Einschätzung, wenn ich mich überschätze und ich eine Antwort bekomme, die auf diesen Kenntnisstand abzielt, hilft mir das auch nicht.
Anzeige
AW: Die 6 Makros existieren und funktionieren
06.07.2025 14:57:47
Christian
Hallo Ralf,

du liegst leider zumindest teilweise danaben.
Du hast zumindest in sofern recht, dass die Makros nicht selbst programmiert wurden, das war bestimmt 10 Std. Arbeit mit Chatgpt bis alles ins kleinste Detail gepasst hat, wie es soll, sowie wirklich alle so optimiert war, was Chatgpt eingefallen ist, was man optimieren könnte und es auch danach noch lief.

Das sind riesige Makros, ich glaube das größte hat in Word eingefügt 22 Seiten, dazu noch 7 weitere Module, die aus den Makros ausgelagert sind, damit diese nicht noch länger werden. 90% davon sind Abläufe, die man genauso gut auch mit Klicken oder Copy + Paste oder per Formel erledigen könnte, das weiß ich, mir ging es bei der Aktion einfach darum, die vielen Dinge die ich wöchentlich mit neuen Daten mache automatisiert zu verarbeiten, anstatt jedes mal wöchentlich alles von Hand.

Aber jetzt zu dem eigentlichen Anliegen.
Allein das erste Makro braucht 3-4 Stunden, weil es sehr viele Internetseiten öffnet und Daten ausliest. Ich wollte einfach nur einen Überblick haben, wie lange die 6 Makros jeweils brauchen, um den Tag an dem die neuen Daten kommen und ich damit die ganze Mappe update zeitlich besser planen kann.
Und da die Zahl der Daten wöchentlich steigt, wird zwangsweise auch die Verarbeitung der Daten immer länger brauchen, sodass ich vorhabe mir irgendwann nochmal einen erneuten Überblick zu verschaffen wie lange es dauert, deshalb die Wahl mit oder ohne Timer ausführen.

Aber weil du eins der Makros haben wolltest, hier das fünfte und kleinste:

Sub fünftesMakro()

With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With

On Error GoTo Fehler

Call UpdateUmwandeln

Dim wsP As Worksheet, ws300 As Worksheet, wsUpd As Worksheet, wsKop As Worksheet
Set wsP = ThisWorkbook.Sheets("Punkte")
Set ws300 = ThisWorkbook.Sheets("300")
Set wsUpd = ThisWorkbook.Sheets("Update")
Set wsKop = ThisWorkbook.Sheets("Kopie")

Dim lastP As Long, last3 As Long, lastU As Long, lastKop As Long

lastP = wsP.Cells(wsP.Rows.count, "A").End(xlUp).Row
last3 = ws300.Cells(ws300.Rows.count, "A").End(xlUp).Row
lastU = wsUpd.Cells(wsUpd.Rows.count, "A").End(xlUp).Row
lastKop = wsKop.Cells(wsKop.Rows.count, "A").End(xlUp).Row

Dim r300_A As String, r300_C As String, r300_D As String
Dim rUpd_C As String, rUpd_A As String
Dim rKop_A As String, rKop_F As String

r300_A = "'300'!$A$1:$A$" & last3
r300_C = "'300'!$C$1:$C$" & last3
r300_D = "'300'!$D$1:$D$" & last3

rUpd_C = "Update!$C$1:$C$" & lastU
rUpd_A = "Update!$A$1:$A$" & lastU

rKop_A = "Kopie!$A$1:$A$" & lastKop
rKop_F = "Kopie!$F$1:$F$" & lastKop

wsP.Range("H1:H" & lastP).FormulaLocal = "=XVERWEIS(A1;" & rUpd_C & ";" & rUpd_A & ";"""";0;1)"
wsP.Range("B1:B" & lastP).FormulaLocal = "=XVERWEIS(A1;" & r300_A & ";" & r300_C & ";"""";0;1)"
wsP.Range("C1:C" & lastP).FormulaLocal = "=XVERWEIS(A1;" & r300_A & ";" & r300_D & ";"""";0;1)"
wsP.Range("D1:D" & lastP).FormulaLocal = "=WENN(RANG.GLEICH(C1;$C$1:$C$" & lastP & ";0)31;RANG.GLEICH(C1;$C$1:$C$" & lastP & ";0);"""")"
wsP.Range("E1:E" & lastP).FormulaLocal = "=301*ANZAHL(H1:BG1)-SUMME(H1:BG1)"
wsP.Range("F1:F" & lastP).FormulaLocal = "=RANG.GLEICH(E1;$E$1:$E$" & lastP & ";0)"
wsP.Range("G1:G" & lastP).FormulaLocal = "=MIN(H1:BG1)"

wsP.Range("B1:H" & lastP).Value2 = wsP.Range("B1:H" & lastP).Value2

With ThisWorkbook.Sheets("Hilfe").Range("F2")
.FormulaLocal = _
"=""https://www.imdb.com/search/name/?birth_date=""&TEXT(EDATUM(HEUTE()-WOCHENTAG(HEUTE();2)+2;-360);""JJJJ-MM-TT"")&"",""&TEXT(EDATUM(HEUTE()-WOCHENTAG(HEUTE();1)+2;-216);""JJJJ-MM-TT"")&""&gender=female&adult=include&count=250"""
.Value2 = .Value2
End With

' Sortieren ohne Header
wsP.Range("A1:BG" & lastP).Sort Key1:=wsP.Range("E1:E" & lastP), Order1:=xlDescending, Header:=xlNo

' Schriftfarbe komplett schwarz setzen
wsP.Range("A1:BH" & lastP).Font.Color = vbBlack

' Zeilen mit D > 0 rot färben
Dim i As Long
For i = 1 To lastP
If IsNumeric(wsP.Cells(i, "D").Value) Then
If wsP.Cells(i, "D").Value > 0 Then
wsP.Range(wsP.Cells(i, "A"), wsP.Cells(i, "BG")).Font.Color = vbRed
End If
End If
Next i

wsP.Columns("A").Insert Shift:=xlToRight

lastP = wsP.Cells(wsP.Rows.count, "B").End(xlUp).Row

wsP.Range("A1:A" & lastP).FormulaLocal = "=WENN(ODER(E1>"""";I131);XVERWEIS(B1;" & rKop_A & ";" & rKop_F & ";301;0;1)-G1;"""")"

wsP.Range("A1:A" & lastP).Value2 = wsP.Range("A1:A" & lastP).Value2

wsP.Range("A1:A" & lastRow).AutoFilter Field:=1, Criteria1:=">"

CleanUp:
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
Exit Sub

Fehler:
MsgBox "Fehler: " & Err.Description, vbExclamation
Resume CleanUp
End Sub
Anzeige
AW: Die 6 Makros existieren und funktionieren
06.07.2025 15:32:46
BoskoBiati
Hi,

in 365 gibt es selbst ohne PQ so viele Möglichkeiten und um Internetseiten abzurufen ist wohl PQ momentan das Beste. Da dauert das Abrufen von hunderten von Seiten u.U. nur 10 bis 15Minuten.
ChatGPT ist auch nur bedingt brauchbar, wenn man mit Excel arbeitet. Das fängt in Deinem Makro schon mal damit an, dass die DIM-Anweisungen nicht enbloc am Anfang stehen.
Wenn Du unbedingt einen Timer haben willst, dann erstelle Dir eine Tabelle, in der alle Makrobezeichnungen aufgelistet sind, dahinter schreibst Du wahlweise ein x oder nichts, dann fragst Du in jedem Makro ab, ob in der Tabelle ein x steht und startest davon abhängig ein weiteres Makro mit einem Timer und gibst das Ergebnis in der Tabelle aus!

Gruß

Edgar
Anzeige
AW: Die 6 Makros existieren und funktionieren
06.07.2025 16:28:47
Christian
Hallo Edgar,

danke für deine Antwort.
das ChatGPT nicht immer das Optimum ist, ist klar. Aber ich habe auch nicht vor, jemanden hier zu bitten in den Makros dieser Größenordnung aufzuräumen.
Aber ich frage dann mal direkt, kann PQ von allen Seiten die ich angebe alle OuterTexts aller Hyperlinks auflisten, die die Seiten beinhalten sowie nebendran die URL auf die die Hyperlinks verweisen (insgesamt ca. 8,8 Mio). diese dann nach bestimmte Kriterien umgruppieren filtern und duplikate entfernen, sodass noch 3 Spalten mit ca. 320.000 Zeilen übrig bleiben? Wenn ja ist wäre eine PQ Lösung interessant. Wenn nein muss ich wohl auch wenn es länger dauert bei meiner VBA Lösung bleiben.
Aber egal wie man es macht, PQ hat in meinen Augen einen Nachteil. Um die Abfrage automatisiert zu aktualisieren brauche ich doch wieder VBA.
Wie ich ja bereits sagte, 90% der Makros beinhalten Sachen die man auch anders lösen kann, vieles sicher auch mit PQ. Aber mir geht es darum dass ich einmal was starte und ich mich um nix mehr zu kümmern brauche bis das Makro fertig ist.
Zu deinem Vorschlag mit dem X ja oder nein. Dann kann ich doch auch in jedes Makro eine Abfrage einbauen, ob ja oder nein, oder?
Wobei dein Vorschlag trotzdem praktikabler ist, weil die Auswahl gespeichert bleibt.
Werde mir dann jetzt mal Gedanken machen, wie ich deinen Vorschlag am für mich praktikabelsten umsetze. Auf jeden Fall schonmal danke
Christian
Anzeige
aber nochmal zu Chatgpt
06.07.2025 16:31:15
Christian
ich hab versucht ChatGPT zu bitten, die ganzen Variablendeklarationen und Worksheet Zuweisungen zu Beginn zu machen. Aber bei den längeren Makros war C. damit überfordert und hat dann plötzlich ganze Codeblöcke weggelassen. Das wurde mir dann zu bunt und ich habs so wie es ist gelassen.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18