Ha a beszúrást megcsinálja, de a függvényt nem illeszti be, akkor a gond az lehet, hogy a Do While ActiveCell.Value <> Empty rész félreviszi a kódot és oly módon értékelődik ki, hogy csak egyetlen egyszer kerül be a loop belsejébe a kód.
Feltéve de nem megengedve, hogy ez igaz, én nem az ActiveCell object-re hivatkoznék, hanem valahogy máshogy hivatkoznám meg azt a területet amit ki akarsz értékeltetni. Könnyen lehet, hogy az activecell nem változik a kód futásakor, vagyis nem végigfut az oszlopokon, henem beáll egy cellára, oda beilleszti a függvényt és nem mozdul. Amikor a loop megint kiértékelteti, hogy az activecell üres-e, akkor azt látja, hogy nem (mert az első lépésben bekerült a képlet) és jgy a kód megy tovább dolgára.
Pont ez az oka annak, hogy Select-et, Active-et meg Active-val kezdődő objecteket nem best practice használni, mert nehéz kiokoskodni, hogy a program futásakor épp mi lesz az Active.