Versuch, einen Start / Stopp-Timer mit einem Excel-Makro zu erstellen

2130
Mel

Ich bin neu in der Erstellung von Makros in Excel und habe versucht, VBA zu verstehen, indem sie andere Makros auseinander nimmt.

Ich versuche gerade, einen Start / Stopp-Timer zu erstellen, um zu messen, wie viel Zeit für verschiedene Projekte und für verschiedene Aufgaben innerhalb von Projekten aufgewendet wird.

Ich möchte, dass mein Benutzer das Projekt (aus einer Dropdown-Liste, die ich in A2 erstellt habe) und den Aufgabentyp (auch aus einer Dropdown-Liste, die sich in B2 befindet) auswählen und dann auf eine Schaltfläche "Start" klicken (alles auf Blatt 1). Daraufhin wird ein Makro ausgeführt, um diese beiden Eingaben in die nächste verfügbare Zeile in Blatt 2 (Spalten A und B) zu übertragen und dann das aktuelle Datum (Spalte C) und die aktuelle Uhrzeit (Spalte D) einzugeben. Wenn sie fertig sind, klicken sie auf eine andere Schaltfläche "Stop" (ebenfalls auf Blatt 1), um die aktuelle Uhrzeit in Blatt 2, Spalte E (dieselbe Zeile wie für "Start") einzufügen.

Also muss es:

Klicken Sie auf die Schaltfläche Start

  • Kopieren Sie die A2- und B2-Werte in die nächste leere Zeile in Blatt 2
  • Geben Sie in Spalte C der gleichen Zeile das aktuelle Datum ein
  • Geben Sie in Spalte D derselben Zeile die aktuelle Uhrzeit ein

Klicken Sie auf die Schaltfläche Stopp

  • In (dieselbe Zeile wie die anderen gerade hinzugefügten Daten) in Spalte E geben Sie die aktuelle Uhrzeit ein

  • Oder letzte D-Zeile, deren aktuelle Uhrzeit in E eingegeben wird

Ich habe versucht, dies zu verwenden:

'Start Button  'Determine emptyRow  ActiveWorkbook.Sheets("Sheet2").Select  emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1   'Transfer information  Cells(emptyRow, 1).Value = A2.Value  Cells(emptyRow, 2).Value = B2.Value  Cells(emptyRow, 3).Value = Today().Value  Cells(emptyRow, 4).Value = Time().Value 

(Anderes Makro)

'Stop Button  'Make Sheet2 active  Sheet2.Activate  'Determine emptyRow  ActiveWorkbook.Sheets("Sheet").Select  emptyRow = WorksheetFunction.CountA(Range("E:E")) + 1   'Input Stop Time  Cells(emptyRow, 5).Value = Time().Value 

Und dies mit:

'Start Button  Sheets(“Sheet1”).Select  Range(“A2”).Copy  Sheets(“Sheet2”).Select  emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1  ActiveSheet.Paste 

Sie haben keinen Fehler gemacht, aber sie haben auch nicht funktioniert, also weiß ich, dass mir etwas fehlt.

0
Formatieren wäre sehr hilfreich ... Ich verstehe nicht, warum Sie einen Timer benötigen. Was würde passieren, wenn Sie in Ihrem Beispiel nicht auf Stopp klicken? Dave vor 7 Jahren 0
"Sie haben keinen Fehler gemacht, aber sie haben auch nicht funktioniert" - was tun sie? Ihre Frage ist jetzt sehr vage. Bitte debuggen Sie Ihren Code und teilen Sie uns mit, wo sich das Verhalten falsch verhält. Máté Juhász vor 7 Jahren 1
Dieser Satz von Code wurde im Bearbeitungsfenster nicht rot und führte nicht zur Fehlermeldung / Fehlerbehebung. Wenn ich es jedoch ausführe (klicken Sie auf die Schaltfläche, mit der es verbunden ist), wird nicht das getan, was ich erwarte (Kopieren / Einfügen). Soweit ich das beurteilen kann, tut es nichts mit den Blättern. Mel vor 7 Jahren 0
Der allgemeine Zweck besteht darin, zu protokollieren, wie viel Zeit für verschiedene Projekte und innerhalb dieser Projekte für verschiedene Aufgaben aufgewendet wird. Mit den Schaltflächen Start und Stopp wird ein laufendes Protokoll der Start- / Stoppzeiten für Projekte / Aufgaben erstellt. Diese Daten werden dann in ein anderes Blatt (das auf "traditionellen" Formeln basiert) eingespeist, das alle Datenpunkte zu einer Zusammenfassung auf der Grundlage des Projekts / der Aufgabe zusammenfasst. Mel vor 7 Jahren 0
Wenn jemand am Ende nicht auf die Stopp-Schaltfläche klickt, wird der Datenpunkt (diese Zeile) "unbrauchbar" (oder muss später manuell bearbeitet werden). Deshalb sollte E (Stoppzeit) wahrscheinlich die letzte Zeile mit einem Wert anzeigen in D (Startzeit) im Gegensatz zu "nächste leere Zelle in E". Wenn ich die Grundeinstellungen zum Laufen bringen kann, kann ich später immer etwas hinzufügen, um eine Nachricht zu öffnen, wenn Sie versuchen, die Arbeitsmappe zu schließen oder erneut auf die Starttaste zu klicken, ohne zuerst auf Stopp zu klicken (dies ist jedoch nicht so wichtig). . Mel vor 7 Jahren 0

1 Antwort auf die Frage

0
Mel

Ich habe noch etwas gelesen und gebastelt und das ist vielleicht nicht der beste Weg, aber es funktioniert für den, für den ich den Start-Button brauche.

Private Sub CommandButton1_Click()  Dim lst As Long Sheets("Sheet1").Range("A2:B2").Copy With Sheets("Sheet2") lst = .Range("A" & Rows.Count).End(xlUp).Row + 1 .Range("A" & lst).PasteSpecial xlPasteColumnWidths .Range("A" & lst).PasteSpecial xlPasteValues End With   With Sheets("Sheet2") lst = .Range("C" & Rows.Count).End(xlUp).Row + 1 .Range("C" & lst).Value = Date End With  With Sheets("Sheet2") lst = .Range("D" & Rows.Count).End(xlUp).Row + 1 .Range("D" & lst).Value = Time() End With   End Sub