Private Sub Worksheet_Change(ByVal Target As Range)
Dim arrWidths As Variant
Dim i As Long
Application.EnableEvents = False
arrWidths = Array(10, 20, 30, 40, 30, 20, 10)
For i = 1 To UBound(arrWidths)
Columns(i).ColumnWidth = arrWidths(i - 1)
Next
Application.EnableEvents = True
End Sub[/sub]
If you run that it will set the widths of as many columns as you insert into the array. It sets seven as is.
You could make that an ordinary macro to be run on request.
Alternatively, you can set the column widths and then protect the worksheet specifying that the columns and rows cannot be formatted. You can then lock that using a password.