Private Sub Worksheet_Change(ByVal Target As Range)
' ZVI:2019-02-07 https://www.mrexcel.com/forum/excel-questions/1086525-expand-column-width-automatically-based-drop-down-selection.html
'--> Settings, change to suit
Const FitColumns = "A:Z" ' Columns to fit
Const FirstDataRow = 24 ' Fit data are in that row and the below rows
'<--End of the settings
Dim a() As Variant, Col As Range, OldWidth
Application.EnableEvents = False
Application.ScreenUpdating = False
With Intersect(Target.EntireColumn, Me.Range(FitColumns))
For Each Col In .Columns
With Col.Resize(FirstDataRow - Col.Cells(1).Row)
a() = .Value
.Value = Empty
OldWidth = .ColumnWidth
.EntireColumn.AutoFit
If .ColumnWidth < OldWidth Then
.ColumnWidth = OldWidth
End If
.Value = a()
End With
Next
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub