Поскольку вы хотите, чтобы код выполнялся только при изменении цены, вам необходимо ограничить область действия события WorkSheet_Change
.В идеале ваши цены будут охватывать один столбец.
Этот код будет выполняться только при изменении ячейки на Column E
- вам нужно будет изменить это соответственно.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Change this line to modify scope of macro
If Target.Count <> 1 Or Target.Column <> 5 Then Exit Sub
Dim Reason As String
MsgBox "Changing the price requires a comment", vbCritical
On Error Resume Next
Reason = Application.InputBox("Please justify the price discount: ", "Discount", Type:=2)
On Error GoTo 0
If Reason = "" Or Reason = "False" Then
Application.EnableEvents = False
MsgBox "Unable to change price"
Application.Undo
Application.EnableEvents = True
Else
Target.ClearComments
Target.AddComment Reason
End If
End Sub