|
無いなら「作っちゃえ」ということで作ってみました。
基本的には、26進数と考えいます。A=0,B=1,・・・,Z=25として AA=0_0
そうすると、1〜26(A〜Z)の範囲は矛盾するので、処理を分けています。
Public Function C1_A(No As Long) As String
Const Alphabet As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const myMessage1 As String = "値が大きすぎます。" & vbCrLf & _
"1以上、256以下の値を指定してください"
Const myMessage2 As String = "値が小さすぎます。" & vbCrLf & _
"1以上、256以下の値を指定してください"
Dim bufF As String
Dim myNo As Long
Dim N As Long
Dim M(1) As Long
'初期化
C1_A = ""
bufF = ""
myNo = No
N = Len(Alphabet)
'Noの判定
If 256 < myNo Then
MsgBox myMessage1
Exit Function
ElseIf myNo < 1 Then
MsgBox myMessage2
Exit Function
End If
'26進数と考えたときの矛盾の修正
'26以下 A=1,B=2,・・・,Z = 26
'26以上 AA=0_0,AB=0_1,・・・,IV=8_21
If myNo <= 26 Then
bufF = Mid(Alphabet, myNo, 1)
Else
myNo = myNo - N - 1
M(0) = myNo Mod N '26進数と考え第一桁 割り算の余
M(1) = myNo \ N '26進数と考え第二桁 割り算の商
For i = LBound(M) To UBound(M)
bufF = Mid(Alphabet, M(i) + 1, 1) & bufF
Next i
End If
C1_A = bufF
End Function
|
|