こんにちは。maruru01です。
10進数→n進数変換用関数を自作してみました。
標準モジュールにでも置いて下さい。
'10進数の正の数値Numを、Keta桁のn進数の文字列に変換する
'nは2~16まで
Public Function nShinsuFromD(Num As Long, n As Long, Keta As Long) As String
Dim temp() As Long '各桁の10進数値表現
Dim a As Long '仮置
Dim i As Long '桁数のループカウンタ
Dim str As String '変換文字列
On Error GoTo Err_End
'エラー処理
'10進数値範囲外
If Num < 0 Then
nShinsuFromD = "ERROR_Num"
Exit Function
End If
'n進数範囲外
If n > 16 Or n < 2 Then
nShinsuFromD = "ERROR_n"
Exit Function
End If
'Keta範囲外
If Keta < 1 Then
nShinsuFromD = "ERROR_Keta"
Exit Function
End If
ReDim temp(Keta - 1)
a = Num
str = ""
For i = 0 To Keta - 1
temp(i) = a Mod n
a = Int(a / n)
str = ChangenShinsu(temp(i)) & str
Next i
nShinsuFromD = str
Exit Function
Err_End:
nShinsuFromD = "ERROR_System"
End Function
'Numを、Num番目の文字に変換する
'0<=Num<=15とする
Public Function ChangenShinsu(Num As Long) As String
Const ChangeStrings As String = "0123456789ABCDEF"
On Error GoTo Err_End
ChangenShinsu = Mid(ChangeStrings, Num + 1, 1)
Exit Function
Err_End:
ChangenShinsu = ""
End Function