I'm no genius at this but could you try referring to the column header such that if column header = x then hide the next number of columns?
Select all of Columns D:AZ and give it a Defined Name (after selecting them, click in the Name Box, located to the left of the Formula Bar, and type a valid name) such as ColumnsToHide, then use this code line in place of the one you posted...
Range("ColumnsToHide").EntireColumn.Hidden = True
If anyone inserts or deletes columns in front of the range you named, the reference for that Defined Name will automatically update.