As a general tip (and certainly something I find useful, although others may disagree), unless you plan on moving the order of the columns around, refer to both row and column with an integer value.
Then, when referring to relative cells, you need not use offset, but you could (for example if referring to the cell 1 to the left and one up from D2)
It might also help if you assign your last-row calculation to a variable and then loop through 'i' (as you are not in fact looping through your last-row, that is constant), i.e.
As for inserting a new row, you can trim the code down to:
Inserting the ID, if you apply the ID value to a string (or integer, depending) Then loop from 1 - 8 (i.e. A-E) and set each row 'heading' (i.e. each blank row) cell value to equal your 'B' value.
Bookmarks