The following macro will only widen defined columns. If other columns appear, their width will not be changed.
Sub AdjustColumnWidth()
Dim varrHeaders As Variant
Dim varrColsWidth As Variant
Dim lColIdx As Long
Dim i As Long
varrHeaders = Split("Category,Emp Code,Employee Name,Beneficiary Name,Bank Account Number,SWIFT Code,Country Code,Net - USD,Net - SAR", ",")
'Examples of column widths:
'Category,Emp Code,Employee Name,Beneficiary Name,Bank Account Number,SWIFT Code,Country Code,Net - USD,Net - SAR
' 20 8 25 25 30 15 5 12 12
varrColsWidth = Array(20, 8, 25, 25, 30, 15, 5, 12, 12)
On Error Resume Next
For i = 0 To UBound(varrHeaders)
lColIdx = 0
lColIdx = FindColumnInRange(varrHeaders(i), Rows(8))
Columns(lColIdx).ColumnWidth = varrColsWidth(i)
Next i
End Sub
Function FindColumnInRange(ByVal columnName As String, ByRef source As Range) As Long
Dim rngHeaderData As Range
Dim rngFind As Range
Set rngHeaderData = source.Resize(1)
Set rngFind = rngHeaderData.Find(What:=columnName, After:=rngHeaderData.Cells(rngHeaderData.Count), _
LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not rngFind Is Nothing Then
FindColumnInRange = rngFind.Column
Else
Err.Raise 11110, , "Can't find column """ & columnName & """ in source "
End If
End Function
Artik
Bookmarks