可能重複:
VBA function to convert column number to letter?轉換列數字值與α-
我需要顯示一個MsgBox示出上次使用的柱。
現在顯示的是列數值,但是可以將其轉換爲等同的字母字符嗎?
Ex。 5列=列E.
由於
可能重複:
VBA function to convert column number to letter?轉換列數字值與α-
我需要顯示一個MsgBox示出上次使用的柱。
現在顯示的是列數值,但是可以將其轉換爲等同的字母字符嗎?
Ex。 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,並只限於BU最大值爲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
測試用一個MessageBox這些值:
msgbox "Column 2445 is " & NumToLetter(2445) & " or " Num2Letter(2445)
列2445是CPA或CPA
msgbox "Column 42445 is " & NumToLetter(42445) & " or " Num2Letter(42445)
列42445是無效的單元格或BJTM
msgbox "Column -1 is " & NumToLetter(-1) & " or " Num2Letter(-1)
柱-1是無效的單元格或
感謝您的功能。他們做了我需要他們做的事。 – Atwp67
這適用於列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)
這個工作,直到列703,與'AAA',但是這截斷它到'AA' – SeanC
啊,對。我從來沒有需要它 - +1給你更完整的答案。 –
肖恩,感謝的功能。他們做了我需要他們做的事。 – Atwp67