Возможно, это то, что вы имели в виду?
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If Not Application.Intersect(Range("A2:B10"), Target) Is Nothing Then
If .Value > 100 Then
MsgBox "You exceeded 100"
End If
End If
End With
End Sub
Приведенный выше код будет работать только в том случае, если была изменена одна из ячеек в диапазоне (A2: B10).Он будет смотреть на измененную ячейку (то есть Target ) и выдаст сообщение, если ее значение больше 100.
Ссылаясь на ваш комментарий, приведенный ниже вариант приведенного выше кода будетНарисуйте общее количество ячеек в контролируемом диапазоне, выдайте сообщение, если это общее число превышает 1, и верните выбор в неисправную ячейку.Обратите внимание, что проценты выражены делением на 100. Поэтому значение 1 будет отображаться как 100%.
Private Sub Worksheet_Change(ByVal Target As Range)
Const RangeAddress As String = "A2:B10"
Dim Ttl As Double
With Target
If Not Application.Intersect(Range(RangeAddress), Target) Is Nothing Then
Ttl = Application.WorksheetFunction.Sum(RangeAddress)
If Ttl > 1 Then
MsgBox "You exceeded 100%"
.Select
End If
End If
End With
End Sub