As range "AC1" is only one cell you do not need to loop.
Also if you hide the column "AC" you will not see the value "1", in order to change it, so the code below will hide the column "AC" with its Controls if cell "AD1" = "1" and un-hide it if you run the code again when it is <> "1"
Sub HideColsProjectCost()
Dim cl As Range
Set cl = Sheets("Project Cost").Range("$AC$1")
If cl.Offset(, 1).Value = "1" Then
cl.EntireColumn.Hidden = True
Else
cl.EntireColumn.Hidden = False
End If
Dim Ctrl As Shape
For Each Ctrl In ActiveSheet.Shapes
If Not Intersect(Ctrl.TopLeftCell, Range(cl.EntireColumn.Address)) Is Nothing Then
If cl.EntireColumn.Hidden Then
Ctrl.Visible = False
Else
Ctrl.Visible = True
End If
End If
Next Ctrl
End Sub
Bookmarks