I am gathering that you really only want/need this to work when a single cell is selected?
I have assumed that for now anyway.
Remove any Worksheet_Change event codes dealing with this issues from sheet modules and place this in the ThisWorkbook module
VBA Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim myWidths As Variant
Dim NumCols As Long, TargetCol As Long, i As Long
If Target.CountLarge = 1 Then
myWidths = Split("10 25 0.4 10 25 0.4 10 25 0.4 10 25 0.4 10 25 0.4") '<- These are the 'normal' column widths
NumCols = UBound(myWidths) + 1
TargetCol = Target.Column
Application.ScreenUpdating = False
For i = 0 To NumCols - 1
Columns(i + 1).ColumnWidth = myWidths(i)
Next i
If Target.Column <= NumCols Then
If myWidths(TargetCol - 1) <> 0.4 And myWidths(TargetCol - 1) <> 10 Then Target.ColumnWidth = 40
End If
Application.ScreenUpdating = True
End If
End Sub