Ja w tym kodzie błędów nie widzę - makro działa tak, jak je zapisałeś. Nie kończy się na wierszu 16, tylko ponieważ jest ono uruchamiana w zdarzeniu Change komórki, polecenie wpisujące coś do komórki:
powoduje ponowne wywołanie zdarzenia zmiany (co może wyglądać przy debugowaniu jakby "przerywało" działanie), ale po krótkim sprawdzeniu że zmiana nie zaszła w kolumnie 11 lub 15, kontynuuje wykonywanie.
Dalej robi dokładnie to, co zapisałeś w warunkach:
, dla przykładu z załącznika: data w 12 kolumnie: L = 2011-01-15 nie jest ani dzisiejszą datą, więc pierwszej części If.. się nie wykona, nie jest też ona większa od daty dzisiejszej minus kolumna J, więc ElseIf też się nie wykona, zatem wykona się ostatnia część warunku: Else, gdzie w kolumny M i N wstawi pusty znak.
Widać to jak coś się w nie wstawi przed odpaleniem makra.
Więc...??