Application.Intersect returns a range object; Excel assumes you mean Range.Value when you write it to the message box which is fine when the range is one cell, but the range of multiple cells has no value property. Try this:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim HEK As Range, rngChanged As Range, cel As Range
Set HEK = Range("D2:D25,K2:K25,R2:R25,Y2:Y25,AF2:AF25,AM2:AM25,AT2:AT25,BA2:BA25,BH2:BH25")
Set rngChanged = Application.Intersect(HEK, Range(Target.Address))
If Not rngChanged Is Nothing Then
For Each cel In rngChanged
MsgBox cel.Value
Next cel
End If
End Sub
Bookmarks