Thema Datum  Von Nutzer Rating
Antwort
20.04.2025 17:24:04 Dirk L.
NotSolved
20.04.2025 23:58:20 ralf_b
NotSolved
21.04.2025 13:07:40 Dirk
NotSolved
21.04.2025 15:29:40 ralf_b
*****
NotSolved
21.04.2025 15:51:05 Gast34942
NotSolved
21.04.2025 19:23:09 ralf_b
NotSolved
21.04.2025 20:03:30 Gast21699
NotSolved
21.04.2025 20:10:21 Dirk L.
NotSolved
Rot update
21.04.2025 23:23:49 ralf_b
NotSolved
21.04.2025 20:38:01 ralf_b
NotSolved
21.04.2025 23:11:06 Dirk L.
NotSolved
21.04.2025 23:52:13 ralf_b
NotSolved
22.04.2025 08:28:40 Dirk L.
NotSolved

Ansicht des Beitrags:
Von:
ralf_b
Datum:
21.04.2025 23:23:49
Views:
16
Rating: Antwort:
  Ja
Thema:
update

ein Update noch, etwas aufgeräumt. Und Now durch Time ersetzt. Damit fällt die Datumsangabe im Zeitstempel weg. Da die Läufe wahrscheinlich nicht über Mitternacht andauern, sollte das kein Problem sein. 


Private Sub Worksheet_Change(ByVal Target As Range)
  ' Überprüfe, ob die Zelle mit den RFID-Daten aktualisiert wurde
    Dim akttime As Date
    akttime = Time
    
    If Target.Address <> "$A$3" Then Exit Sub
    Dim rfid As String
    rfid = Target.Value
      
    ' Finde den Läufer in der Tabelle anhand der ID
    Dim runnerRow As Range
    Set runnerRow = Me.Columns("C").Find(What:=rfid, LookIn:=xlValues, LookAt:=xlWhole)
    If runnerRow Is Nothing Then Exit Sub
    
    ' Überprüfung, ob eine Startzeit vorliegt
    If IsEmpty(runnerRow.Offset(0, 6).Value) Then
        ' Erfasse die Startzeit beim ersten Erfassen des Chips
        Application.EnableEvents = False
        runnerRow.Offset(0, 6).Value = akttime
        Application.EnableEvents = True
    Else
        ' Erhöhe die Rundenzählung bei erneuter Erfassung des Chips
        If runnerRow.Offset(0, 4).Value < 21 Then
             Dim lasttime As Date
             lasttime = WorksheetFunction.Max(runnerRow.Offset(0, 7).Resize(1, 21))
            
             If DifferenzMehrAls5(lasttime, akttime) Then
              
                 Application.EnableEvents = False
                  runnerRow.Offset(0, 4).Value = runnerRow.Offset(0, 4).Value + 1
                  runnerRow.Offset(0, 5).Value = Me.Range("G1") * runnerRow.Offset(0, 4)
                  runnerRow.Offset(0, 6 + runnerRow.Offset(0, 4)).Value = akttime
                                                                        
                  ' Aktualisiere die reinen Laufzeiten und Differenz
                  runnerRow.Offset(0, 28).Value = akttime
                  runnerRow.Offset(0, 29).Value = runnerRow.Offset(0, 28).Value - runnerRow.Offset(0, 6).Value
                    
                 Application.EnableEvents = True
             Else
                'hier Bereich für Aktion wenn Rundenzeit unter 5 Minuten
             End If
        Else
            'Aktion falls letzte Runde angefangen
        End If
    End If
   
End Sub
 
Function DifferenzMehrAls5(zeita, zeitb) As Boolean
    Dim zeit1 As Date
    Dim zeit2 As Date
    Dim differenz As Double
     
    ' Beispielzeiten setzen
    zeit1 = CDate(zeita)
    zeit2 = CDate(zeitb)
     
    ' Differenz berechnen (in Tagen, deshalb *24*60 für Minuten)
     differenz = Abs(zeit2 - zeit1) * 24 * 60
     
     DifferenzMehrAls5 = differenz > 5
   
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
20.04.2025 17:24:04 Dirk L.
NotSolved
20.04.2025 23:58:20 ralf_b
NotSolved
21.04.2025 13:07:40 Dirk
NotSolved
21.04.2025 15:29:40 ralf_b
*****
NotSolved
21.04.2025 15:51:05 Gast34942
NotSolved
21.04.2025 19:23:09 ralf_b
NotSolved
21.04.2025 20:03:30 Gast21699
NotSolved
21.04.2025 20:10:21 Dirk L.
NotSolved
Rot update
21.04.2025 23:23:49 ralf_b
NotSolved
21.04.2025 20:38:01 ralf_b
NotSolved
21.04.2025 23:11:06 Dirk L.
NotSolved
21.04.2025 23:52:13 ralf_b
NotSolved
22.04.2025 08:28:40 Dirk L.
NotSolved