重複の可能性:
列番号を文字に変換する VBA 関数?
最後に使用した列を示す msgbox を表示する必要があります。
現在、列の数値が表示されていますが、対応する英字に変換できますか?
元。列 5 = 列 E。
ありがとう
重複の可能性:
列番号を文字に変換する VBA 関数?
最後に使用した列を示す msgbox を表示する必要があります。
現在、列の数値が表示されていますが、対応する英字に変換できますか?
元。列 5 = 列 E。
ありがとう
私はなんとか2つの方法を手に入れました。1つは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
もう1つはベース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
メッセージボックスを使用してこれらの値をテストするには:
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が無効なセルまたは
これは列 A から ZZ で機能します (Sean Cheshire のコメントで指摘されているように):
Function ColLetter(ColNumber As Integer) As String
ColLetter = Left(Cells(1, ColNumber).Address(False, False), 1 - (ColNumber > 26))
End Function
使用するには:MsgBox ColLetter(oRangeObject.Column)