This line deals with that:
Set rng = ws.Range(ws.Range("F2"), ws.Range("F2").End(xlDown))
It starts the range at F2 then performs the equivalent of Ctrl + Down to find the last populated row in column F. It then performs the loop that copies to the other sheets for each row in that range.
So long as there are no blanks in this row all should work well and not need to be adjusted as you add/remove data to/from the master sheet.
You could use the last row approach for the sheet change event to negate the need for specifying a range. That's what I meant early on when I said you could make it dynamic.
BSB
Bookmarks