2016-03-30 162 views
0

我的工作在Excel的項目和我處理正在改變生活和E列從外部源採取的價格和F.VBA宏更改單元格的顏色更改值1秒

我要的是:

  1. 當這些細胞變化值,我希望他們能夠從橙色改變其顏色,以讓說白,或更改單元格背景,以白色
  2. 我希望這種情況發生僅1秒或更少,並恢復原來的單元格顏色或背景顏色

這樣我可以保持我的眼睛,當他們改變價格。

這可能嗎?

請幫忙。感謝

回答

2

添加到這一點,你希望它應用到(而不是在一個單獨的模塊)爲1秒的顏色變化時,在列E或F的任何細胞改變工作表的代碼:

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 

或者對於少於1秒的更改,使用下面的版本作爲application.wait不處理比1秒更好的時間,但timer

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 

ColorIndex值爲白色和默認橙色。要更改爲您要查找的特定顏色,請參閱http://dmcritchie.mvps.org/excel/colors.htm

編輯 - 下面的新答案。上面的原始答案。

好吧,這是一個混亂的方式,但應該實現你想要做的。

粘貼此爲一個模塊,調整1到10來覆蓋你看更改細胞的數量:

Public val(1 To 10) As Variant 

粘貼到您的ThisWorkbook代碼區這一點,調整單元格引用所以每REF你看包括在正確的升序(E列最低到最高,然後F欄低到高):

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 

最後,粘貼到表與價值觀你」的代碼區重新觀察變化,再次調整範圍適合你的手錶範圍:

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 

最後保存並關閉工作簿,然後重新打開它,並希望的顏色應與值一起更新。

+0

非常感謝您的幫助。我添加了代碼,但它似乎只在單擊單元格並更改其顏色時才起作用。當它自動更新新的價格它似乎不工作。 – JustSomeExcelVbathings

+0

工作表更改事件僅在工作表上的實際值更改時觸發。我認爲你的價值觀是通過某種公式自動更新的?如果你可以在價格價值更新的機制上發佈一些細節,我可以看到是否還有另一種方法可以考慮改變這些變化。 –

+0

是的,有一個公式用於從列標題和返回確切價格的值。所以,公式不會改變,只有值。如果我在E10列上寫公式,例如this = A10也是一樣。如果我在a10上編寫,讓我們說1000,並將其更改爲1500,則E10上不會發生任何事情。值會改變,但背景顏色不會。 – JustSomeExcelVbathings