2016-03-30 8 views
0

Ich arbeite an Excel-Projekt und ich bin den Umgang mit Preisen, die von einer externen Quelle in Spalte E und F. Live und werden genommen verändernVBA-Makro Farbe der Zelle zu ändern, der Wert ändert sich für 1 Sekunde

Was ich wollen, ist:

  1. Wenn diese Zellen Wert ändern, ich möchte, dass sie von ihrer Farbe ändern Orange Weiß können sagen, oder Zelle Hintergrund ändern White
  2. ich möchte diese für 1 Sekunde nur geschehen oder weniger, und zur ursprünglichen Zelle zurückkehren Farbe oder Hintergrundfarbe

So kann ich die Preise im Auge behalten, wenn sie sich ändern.

Ist das möglich?

Bitte helfen.

Dank

Antwort

2

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.

+0

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

+0

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. –

+0

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

Verwandte Themen