Чтобы отслеживать изменения стиля в Excel 2007/2010 с помощью VBA
Мне нужно отслеживать изменения стиля ячейки на некоторых листах. Я не могу использовать отслеживание встраивания в Excel 2007/2010, потому что мне нужно что-то настроить. Я попытался отследить изменение стиля с помощью Workbook_SheetChange, но не смог. Он никогда не срабатывает, когда я переключаю ячейку с одного стиля на другой.
Есть ли другое событие, которое можно использовать для отслеживания смены стиля? Или какой-нибудь обходной путь для этого?
1 ответ
Нет события, вызванного изменением формата.
Лучший обходной путь - это мониторинг события 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
Это самый простой возможный случай. Все становится сложнее, если они изменяют целый ряд ячеек одновременно.