我开发了一个Excel实时数据源(RTD)来监视股票价格。
我想找到一种方法来改变价格变化的单元格的颜色。
例如,当价格变化时(它通过RTD公式包含的新价格发生变化),最初绿色的单元格会变为红色,然后在新价格到达时变回绿色,等等......Excel:或者更改单元格颜色作为单元格值更改
回答
也许这可以让你开始? 当实时数据刷新时,引发一个事件。 概念SIS的实时数据存储在variabele并检查它是否已经改变
Dim rtd As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet.Range("A1")
If .Value <> rtd Then
Select Case .Interior.ColorIndex
Case 2
.Interior.ColorIndex = 3
Case 3
.Interior.ColorIndex = 4
Case 4
.Interior.ColorIndex = 3
Case Else
.Interior.ColorIndex = 2
End Select
Else
.Interior.ColorIndex = 2
End If
rtd = .Value
End With
End Sub
谢谢,我会给它一个镜头,并让你张贴。我希望它不会超载性能:-) – 2011-12-20 11:26:00
我不知道如何将您的主张概括为“N”个单元格,因为我有一整张RTD单元格。理想情况下,我想检测任何单元格上的更改,而不仅仅是一个特定的单元格 – 2011-12-20 12:02:11
也许你可以使用(隐藏)工作表让你在更新前复制旧值,然后使用条件格式显示更改。 – Arnoldiusss 2011-12-20 13:36:09
该解决方案reposonds到Calculation
事件。我不完全确定RTD更新是否会触发此事件,因此您需要进行实验。
将此代码添加到包含您的RTD呼叫的Worksheet
模块。
它从上次计算中保留内存中工作表数据的副本,并在每个计算中比较新值。
它将其操作限制在包含您公式的单元格中。
Option Explicit
Dim vData As Variant
Dim vForm As Variant
Private Sub Worksheet_Calculate()
Dim vNewData As Variant
Dim vNewForm As Variant
Dim i As Long, j As Long
If IsArray(vData) Then
vNewData = Me.UsedRange
vNewForm = Me.UsedRange.Formula
For i = LBound(vData, 1) To UBound(vData, 1)
For j = LBound(vData, 2) To UBound(vData, 2)
' Change this to match your RTD function name
If vForm(i, j) Like "=YourRTDFunction(*" Then
If vData(i, j) <> vNewData(i, j) Then
With Me.Cells(i, j).Interior
If .ColorIndex = 3 Then
.ColorIndex = 4
Else
.ColorIndex = 3
End If
End With
End If
End If
Next j, i
End If
vData = Me.UsedRange
vForm = Me.UsedRange.Formula
End Sub
前面的答案都假设实时数据馈送触发工作表事件。我在RTD文件中找不到任何证实或否认这一假设。但是,如果它确实触发了工作表事件,我会认为Worksheet_Change会是最有用的,因为它识别出已更改的单元。
以下可能值得尝试。它必须放置在相关工作表的代码区域中。
Option Explicit
Sub Worksheet_Change(ByVal ChangedCell As Range)
' This routine is called whenever the user changes a cell.
' It is not called if a cell is changed by Calculate.
Dim ColChanged As Integer
Dim RowChanged As Integer
ColChanged = ChangedCell.Column
RowChanged = ChangedCell.Row
With ActiveSheet
If .Cells(RowChanged, ColChanged).Font.Color = RGB(255, 0, 0) then
' Changed cell is red. Set it to green.
.Cells(RowChanged, ColChanged).Font.Color = RGB(0, 255, 0)
Else
' Changed cell is not red. Set it to red.
.Cells(RowChanged, ColChanged).Font.Color = RGB(255, 0, 0)
End If
End With
End Sub
Sub Worksheet_Change(ByVal ChangedCell As Range)
' This routine is called whenever the user changes a cell.
' It is not called if a cell is changed by Calculate.
Dim ColChanged As Integer
Dim RowChanged As Integer
ColChanged = ChangedCell.Column
RowChanged = ChangedCell.Row
With ActiveSheet
If .Cells(RowChanged, ColChanged).Interior.ColorIndex = 19 Then
' Changed cell is red. Set it to green.
.Cells(RowChanged, ColChanged).Interior.ColorIndex = 19
Else
' Changed cell is not red. Set it to red.
.Cells(RowChanged, ColChanged).Interior.ColorIndex = 19
End If
End With
End Sub
我一直在寻找相同。我的方案就像在从列表中选择值时更改单元格的颜色。每个列表项对应一种颜色。
什么最终为我工作是:
Private Sub Worksheet_Change(ByVal Target As Range)
Set MyPlage = Range("B2:M50")
For Each Cell In MyPlage
Select Case Cell.Value
Case Is = "Applicable-Incorporated"
Cell.Font.Color = RGB(0, 128, 0)
Case Is = "Applicable/Not Incorporated"
Cell.Font.Color = RGB(255, 204, 0)
Case Is = "Not Applicable"
Cell.Font.Color = RGB(0, 128, 0)
Case Else
Cell.EntireRow.Interior.ColorIndex = xlNone
End Select
Next
ActiveWorkbook.Save
End Sub
- 1. 更改单元格颜色
- 2. 更改单元格颜色
- 3. Excel更改单元格颜色
- 4. Excel VBA - 单元格颜色更改
- 5. Excel更改单元格颜色
- 6. 基于值更改单元格颜色
- 7. 基于另一个单元格值更改单元格颜色
- 8. jquery更改表格单元格颜色
- 9. Sharepoint单元格更改颜色代码
- 10. 更改JTable中单元格的颜色
- 11. 基于类更改单元格颜色
- 12. 更改datagrid行单元格的颜色
- 13. Tkintertable更改单元格/行的颜色
- 14. 更改JTable单元格颜色
- 15. Swift - XLActionController - 更改单元格颜色
- 16. 更改xamDataGrid单元格中的颜色
- 17. 更改dataGridView单元格中的颜色
- 18. Java JTable更改单元格颜色
- 19. 更改标记单元格的颜色
- 20. 更改单元格颜色仅
- 21. 更改NatTable单元格选择颜色
- 22. Setinterval更改单元格的颜色
- 23. 如何根据值更改更改单元格的颜色
- 24. VBA宏更改单元格的颜色更改值1秒
- 25. Datagridview更改非空单元格的单元格颜色
- 26. VBA根据单元格数量更改单元格的颜色
- 27. 当单元格选中时更改单元格的颜色
- 28. excel宏:根据原始单元格值更改单元格值
- 29. Excel VBA根据值更改单元格的颜色
- 30. 更改基于值的Excel单元格颜色
为什么不使用条件格式?这意味着你不依赖于用户启用宏。 – Reafidy 2011-12-19 23:41:23
尝试进一步具体地使用条件格式:我认为这是一个不行,因为它是基于价值的(大,小,平等等),我发现没有办法去做我想要的,因为我只是想跟踪“任何“改变的细胞。 – 2011-12-20 11:29:12