Why do you use the SelectionChange event? Just curious...
Must this really be evaluated everytime you change selection?
Seems like overkill to me... why not use the Change event, won't
fire as often, so that this sub will not slow things down too much?
As for the Range: change
("=D23:E304") to ("D23:E304")
the Sheets(1). is also unnecessary I think... try to remove that as well.