Fixing problems like this requires isolating the primary cause. My debugging suggestions were in that vein. Not solutions, but ways to isolate the primary cause.
If the slowdown occurs during changing column widths, maybe try something brute force: come up with some string composed of underscores, minus signs, periods and spaces which produce your desired minimum column width. Make that a string constant in your VBA module. If row 5, say, from col C right should always be blank, enter that string as the value for C5:XXX5 (where XXX is a placeholder), then include up to row 5 in the AutoFit call. That'd ensure the minimum column width would be what you want without needing to use a subsequent loop. After the AutoFit call, clear C5:XXX5.
Also consider adding the following at the top and bottom of your macro.
Bookmarks