Hi, bin gerade am experimentieren. Aber finde darauf keine Lösung.
Immer wenn AC2 einen Wert aus der Spalte H aufweist, dann soll in AC4 für ca.5 Sekunden „erledigt“ stehen und in AC 18 ebenfalls für einen kurzen Augenblick „beendet“ stehen. Dann aber wieder aus der Zelle gelöscht werden. Ist sowas mit einer Zellenformel möglich?
mit Hilfe habe ich diesen VBA Code (kleine Änderung: AA2 soll mit der Spalte AF verglichen werden. Wenn Übereinstimmung, dann in AA4 "erledigt" und in AA18 "beendet" für ein paar Sekunden dann wieder weg.) Klappt leider nicht. Weiss wer warum nicht?
Gruß Markus
Test.xlsm (Größe: 41,7 KB / Downloads: 2)
Code:
Sub MarkAsCompleted() Dim ws As Worksheet Dim LastRow As Long Dim Cell As Range Dim TargetValue As Variant
' Ändern Sie den Blattnamen und den Zielwert entsprechend. Set ws = ThisWorkbook.Sheets("GEWINNER") TargetValue = ws.Range("AA2").Value
For Each Cell In ws.Range("AF2:AF" & LastRow) If Cell.Value = TargetValue Then flag = True Exit For ' Beenden Sie die Schleife, wenn ein übereinstimmender Wert gefunden wurde. End If Next Cell
If flag Then ws.Range("AA4").Value = "erledigt" ws.Range("AA18").Value = "beendet" Application.OnTime Now + TimeValue("00:00:05"), "RemoveMarkings" Else ws.Range("AA4").ClearContents ws.Range("AA18").ClearContents End If
Application.ScreenUpdating = True ' Bildschirmaktualisierung wieder aktivieren End Sub
Sub RemoveMarkings() ' Ändern Sie den Blattnamen entsprechend. ThisWorkbook.Sheets("GEWINNER").Range("AA4").ClearContents ThisWorkbook.Sheets("GEWINNER").Range("AA18").ClearContents End Sub
18.10.2023, 10:53 (Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2023, 11:09 von hddiesel.)
Hallo Markus,
wenn du AC2 mit der Spalte H vergleichen möchtest, dann solltest du auch mit der "Spalte H" vergleichen und nicht mit der "Spalte AF".
Beachte auch den Speicherort der Makros
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Dieses Makro in das Sheets("GEWINNER")
Dim ws As Worksheet Dim LastRow As Long Dim Cell As Range Dim TargetValue As Variant Dim flag As Boolean
If Intersect(Target, Range("AC2")) Is Nothing Then Exit Sub Application.EnableEvents = False ' Die Auto- Makros deaktivieren Application.ScreenUpdating = False ' Bildschirmaktualisierung deaktivieren
' Ändern Sie den Blattnamen und den Zielwert entsprechend. Set ws = ThisWorkbook.Sheets("GEWINNER") TargetValue = ws.Range("AC2").Value LastRow = ws.Cells(ws.Rows.Count, "AF").End(xlUp).Row flag = False
' Prüfen ob AC2 (TargetValue), einen Wert aus der Spalte H enthält For Each Cell In ws.Range("H2:H" & LastRow) If Cell.Value = TargetValue Then flag = True Exit For ' Beenden Sie die Schleife, wenn ein übereinstimmender Wert gefunden wurde. End If Next Cell
If flag Then ws.Range("AC4").Value = "erledigt" ws.Range("AC18").Value = "beendet" Application.OnTime Now + TimeValue("00:00:05"), "RemoveMarkings" Else ws.Range("AC4,AC18").ClearContents End If
Application.EnableEvents = True ' Die Auto- Makros wieder aktivieren Application.ScreenUpdating = True ' Die Bildschirmaktualisierung wieder aktivieren
End Sub
Code:
Sub RemoveMarkings()
' Dieses Makro in ein eingefügtes Modul ' Ändern Sie den Blattnamen entsprechend.
schreibe doch gleich, dass es bei den beiden Zellen, um verbundene Zellen geht, welche beschrieben und Zeitversetzt wieder geleert werden sollen, dazu wird (MergeArea) benötigt. Ohne (MergeArea), erfolgt eine Fehlermeldung.