将列数值转换为alpha

可能重复:
VBA函数将列号转换为字母?

我需要显示一个msgbox,显示最后使用的列。

现在列数值被显示,但可以被转换成它的字母字符相当于?

防爆。 第5列= E列

谢谢

我设法得到2个方法。 一个依赖于Excel Cells ,所以如果你使用一个无效的列,它会失败:

 Function NumToLetter(q As Long) As String Dim Add As String 'Ignore error so it fails on an invalid cell On Error Resume Next Add = Cells(1, q).Address If Len(Add) Then NumToLetter = Mid(Add, 2, InStr(2, Add, "$") - 2) Else NumToLetter = "Invalid Cell" End If End Function 

另一个使用基数26,并且只限于long的最大值:

 Function Num2Letter(q As Long) As String Dim r As Long While q > 0 r = q Mod 26 If r = 0 Then r = 26 ' needed for column Z Num2Letter = Chr(64 + r) & Num2Letter q = Int(q / 26) + (r = 26) ' fix for column Z Wend End Function 

用一个消息框来testing这些值:

 msgbox "Column 2445 is " & NumToLetter(2445) & " or " Num2Letter(2445) 

第2445栏是注册会计师或注册会计师

 msgbox "Column 42445 is " & NumToLetter(42445) & " or " Num2Letter(42445) 

列42445是无效单元格或BJTM

 msgbox "Column -1 is " & NumToLetter(-1) & " or " Num2Letter(-1) 

列-1是无效单元格或

这适用于列A到ZZ(正如在肖恩·柴郡的评论中指出的那样):

 Function ColLetter(ColNumber As Integer) As String ColLetter = Left(Cells(1, ColNumber).Address(False, False), 1 - (ColNumber > 26)) End Function 

使用: MsgBox ColLetter(oRangeObject.Column)