Fügen Sie diese in den Code des Arbeitsblatt Sie es (nicht in einem separaten Modul) für eine 1 Sekunde Farbwechsel anwenden möchten, wenn eine Zelle in der Spalte E oder F ändert:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:F")) Is Nothing Then
Target.Interior.ColorIndex = 2
Application.Wait (Now + #0:00:01#)
Target.Interior.ColorIndex = 46
End If
End Sub
Or für weniger als 1 Sekunde ändern, verwenden Sie die Version unten als application.wait
nicht mal weniger als 1 Sekunde, aber timer
funktioniert.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:F")) Is Nothing Then
Dim x As Single
x = Timer
While Timer - x < 0.5
Target.Interior.ColorIndex = 2
Wend
Target.Interior.ColorIndex = 46
End If
End Sub
Die ColorIndex-Werte sind für Weiß und Standard-Orange. Um zu den gewünschten Farben zu wechseln, siehe http://dmcritchie.mvps.org/excel/colors.htm
EDIT - Neue Antwort unten. Ursprüngliche Antwort oben.
Ok, das ist ein bisschen chaotisch, aber sollte erreichen, was Sie suchen.
Paste dieses in ein Modul, das 1 bis 10 Einstellung der Anzahl der Zellen decken Sie für Veränderungen sehen gerade:
Public val(1 To 10) As Variant
Fügen Sie diese in Ihrem Code-Bereich Diesearbeitsmappe, die Einstellung der Zellenreferenzen so jede ref Sie sehen gerade in der richtigen aufsteigenden Reihenfolge enthält (Spalte E niedrigsten bis zum höchsten, dann Spalte F niedrigsten zum höchsten):
Private Sub Workbook_Open()
val(1) = Sheet1.Range("E1").Value
val(2) = Sheet1.Range("E2").Value
val(3) = Sheet1.Range("E3").Value
val(4) = Sheet1.Range("E4").Value
val(5) = Sheet1.Range("E5").Value
val(6) = Sheet1.Range("F1").Value
val(7) = Sheet1.Range("F2").Value
val(8) = Sheet1.Range("F3").Value
val(9) = Sheet1.Range("F4").Value
val(10) = Sheet1.Range("F5").Value
End Sub
Schließlich fügen Sie diese in den Codebereich des Blattes mit den Werten Sie‘ Nach Änderungen Ausschau halten und die Bereiche erneut anpassen passen Sie Ihre Uhr Bereich:
Private Sub Worksheet_Calculate()
Dim x As Single, colIndx As Integer
i = 1
For Each cell In Range("E1:E5")
If cell.Value <> val(i) Then
colIndx = cell.Interior.ColorIndex
x = Timer
While Timer - x < 0.5
cell.Interior.ColorIndex = 2
Wend
cell.Interior.ColorIndex = colIndx
val(i) = cell.Value
End If
i = i + 1
Next cell
For Each cell In Range("F1:F5")
If cell.Value <> val(i) Then
colIndx = cell.Interior.ColorIndex
x = Timer
While Timer - x < 0.5
cell.Interior.ColorIndex = 2
Wend
cell.Interior.ColorIndex = colIndx
val(i) = cell.Value
End If
i = i + 1
Next cell
End Sub
Schließlich speichern und Ihre Arbeitsmappe schließen und wieder öffnen und hoffentlich die Farben sollten zusammen mit den Werten aktualisieren.
Vielen Dank für Ihre Hilfe. Ich habe den Code hinzugefügt, aber es scheint nur zu funktionieren, wenn ich auf Zelle klicke und Farbe ändere. Wenn Auto neue Preise aktualisiert, scheint es nicht zu funktionieren. – JustSomeExcelVbathings
Das Ereignis zum Ändern des Arbeitsblattes wird nur ausgelöst, wenn sich die tatsächlichen Werte auf dem Blatt ändern. Ich nehme an, dass Ihre Werte automatisch über eine bestimmte Formel aktualisiert werden? Wenn Sie einige Details über den Mechanismus, mit dem die Preiswerte aktualisiert werden, veröffentlichen können, kann ich sehen, ob es eine andere Methode gibt, die ich mir vorstellen kann, um die Änderungen hervorzuheben. –
Ja, es gibt eine Formel verwendet, die Werte aus der Spalte Schlagzeilen und genaue Preise zurücknimmt. Also, Formel ändert sich nicht, nur Werte.Es ist gleich, wenn ich Formel auf E10-Spalte schreibe, zum Beispiel dies = A10. Und wenn ich auf a10 schreibe, sagen wir 1000 und ändere es auf 1500, wird auf E10 nichts passieren. Wert ändert sich, aber Hintergrundfarbe nicht. – JustSomeExcelVbathings