我需要跟踪某些工作表中的单元格样式更改。我无法在 Excel 2007/2010 中使用内置跟踪,因为我需要自定义一些东西。我试图通过 Workbook_SheetChange 跟踪样式更改但失败了。当我将单元格从一种样式更改为另一种样式时,它永远不会触发。
是否有任何其他事件可用于跟踪样式更改?或者有什么解决方法?
格式更改不会触发任何事件。
最好的解决方法是监视 Worksheet_SelectionChange 事件。当用户单击一个单元格时,您必须存储对该单元格的引用以及您要监视的所有格式信息。下次触发事件时,您必须回顾他们单击的最后一个单元格,将其当前格式与您保存的格式信息进行比较,这样您就可以检测到更改。
缺点是您只能在他们点击远离他们格式化的单元格后才能检测到更改。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static LastRange As Range 'The last range selected'
'For example, monitor the background color or the cell'
Static LastColorIndex As Integer
If LastRange.Cells(1).Interior.ColorIndex <> LastColorIndex Then
'Do what you do'
End If
Set LastRange = Target
LastColorIndex = Target.Interior.ColorIndex
End Sub
这是最简单的情况。如果他们一次修改整个单元格范围,事情会变得更加复杂。