Чтобы отслеживать изменения стиля в 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

Это самый простой возможный случай. Все становится сложнее, если они изменяют целый ряд ячеек одновременно.

Другие вопросы по тегам