いくつかのシートでセルスタイルの変更を追跡する必要があります。何かをカスタマイズする必要があるため、Excel2007/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
これは可能な限り最も単純なケースです。セルの全範囲を一度に変更すると、事態はさらに複雑になります。