hmm, come to think of it, you may want to reverse the Delete lines...
If you delete A and B first, What was in D and E, is now in B and C. So then whent it deletes D and E, it will actually delete whatever was originally in F and G...does that make sense....
so just swap those two lines around so it deletes D and E first...
so instead of
Range("A:B").EntireColumn.Delete
Range("D:E").EntireColumn.Delete
change it to
Range("D:E").EntireColumn.Delete
Range("A:B").EntireColumn.Delete