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