使用VBA跟踪Excel 2007/2010中的样式更改

时间:2012-04-12 15:36:43

标签: excel vba

我需要跟踪某些工作表中的单元格样式更改。我无法在Excel 2007/2010中使用buid-in跟踪,因为我需要自定义某些内容。我试图通过Workbook_SheetChange跟踪样式更改但是失败了。当我将单元格从一种样式更改为另一种样式时,它永远不会触发。

是否还有其他可用于跟踪样式更改的事件?或者任何解决方法?

1 个答案:

答案 0 :(得分:2)

格式更改时没有触发事件。

最佳解决方法是监视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

这是最简单的情况。如果他们一次修改整个范围的单元格,情况会变得更复杂。