我正在研究Excel Project,我正在处理正在变化的价格,并且是从E和F列的外部来源获取的。
我想要的是:
通过这种方式,我可以在变化时关注价格。
这可能吗?
请帮忙。感谢
答案 0 :(得分:2)
当E或F列中的任何单元格发生变化时,将其添加到您希望它应用于(而不是单独的模块中)的工作表的代码中,以进行1秒的颜色更改:
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代码区域,调整单元格引用,以便您正在观看的每个引用都包含在正确的升序中(列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
最后保存并关闭工作簿并重新打开它,希望颜色应随值更新。