Convert Column Position Numbers to Column Letters


Function ColumnLetter(rng As Range) As String
'Precondition:
'- range is a single cell, range or column 
'- range is Row is not allowed (returns the rownumber)
'Testcases:
'Debug.Print ColumnLetter(ActiveSheet.Range("b1"))     '>>B
'Debug.Print ColumnLetter(ActiveSheet.Range("bb1:bc1"))'>>BB
'Debug.Print ColumnLetter(ActiveSheet.Columns(2))      '>>B
'Debug.Print ColumnLetter(ActiveSheet.Columns(31))     '>>AE
'Debug.Print ColumnLetter(ActiveSheet.Columns(31))     '>>31
Dim strAddress As String
    strAddress = rng.Address
    ' Because .Address is $$, drop the first
    ' character and the characters after the column letter(s).
    ColumnLetter = Mid(strAddress, InStr(strAddress, "$") + 1, InStr(2, strAddress, "$") - 2)
    'remove : in case of input is column (address looks like $A:$A and will return A:)
    ColumnLetter = Replace(ColumnLetter, ":", "")
End Function