Been there, done that. There are a few ways to work around this. One of the things that I do from time to time is hide the first 100 rows of the worksheet I am using before I start my project. I can then use the hidden rows to embed lists, headers, whatever I might need to facilitate other things. For example, let's say that you use row 1 to put headers in for your columns of data. For example, cell D1 will have "Employee names" in it. Fast forward a bunch of work on the worksheet later. The header that was in D1 is now in L1 because of columns that have been moved. I can write code to search through row 1 and find the header I am looking for to identify the column that I need. The code will never need to be rewritten because it dynamically searches for the header rather than depend on a specific cell.
Another way to do this is to use constants. For example:
const EmployeeName as String = "D"
Range(EmployeeName & "150").Value = "Milton"
Now if you ever need to redefine that column, you just change the value in the constant expression.
I'm sure that there are a few other ways to do this, but these are the two I tend to use most often. I hope that this helps.