Это прекрасно работает для меня. Вы уверены, что макрос прикреплен к правильному листу, а не к книге (или, что еще хуже, в модуле)?
Простой способ определить это:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
If Target.Address = "$A$15" Then
MsgBox "XX " & Target.Address
End If
End Sub
и убедитесь, что сообщение появляется при изменении любой ячейки (включая значение, которое вы должны проверить в своем операторе if), а также убедитесь, что вы получаете два сообщения при изменении ячейки A15.