Кажется, вас интересует событие Worksheet.Change , которое запускается, когда ячейки на листе изменяются пользователем или по внешней ссылке. Это событие не происходит при изменении ячеек во время пересчета. Используйте событие Calculate , чтобы заблокировать пересчет листа. Например, в следующем примере кода значения в диапазоне A1:A10
устанавливаются в верхнем регистре при вводе данных в ячейку.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A10")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
'Set the values to be uppercase
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub