I tried to make it but not sure how you like it 
Dim sgWidth As Single, sgActive As Single, rSource As Range, rTarget As Range
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
Target.ColumnWidth = sgActive
If Not rSource Is Nothing Then rSource.ColumnWidth = sgWidth
Set rSource = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not rSource Is Nothing Then rSource.ColumnWidth = sgWidth
If Not rTarget Is Nothing Then rTarget.ColumnWidth = sgActive
If Target.Column <> 3 Then Exit Sub
With Target
On Error Resume Next
v = .Validation.Type
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
If .Validation.Type = xlValidateList Then
On Error Resume Next
Set rSource = Excel.Range(.Validation.Formula1)
On Error GoTo 0
If Not rSource Is Nothing Then
rSource.WrapText = False
sgActive = .ColumnWidth
sgWidth = rSource.ColumnWidth
rSource.EntireColumn.AutoFit
Target.ColumnWidth = rSource.ColumnWidth
Set rTarget = Target
End If
End If
End With
End Sub
Bookmarks