Function DecToNum(数値 As Long, 基数 As Integer) As String ' ' 数値を指定基数の進数に変換 ' Const num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" Dim q As Long '商 Dim r As Long '余り DecToNum = "" If 基数 <= 1 Then DecToNum = CVErr(xlErrValue) Exit Function End If q = 数値 Do r = q Mod 基数 q = q \ 基数 DecToNum = Mid(num, r + 1, 1) & DecToNum Loop While q > 0 End Function
NumToDec(数値,基数)
Function NumToDec(数値 As String, 基数 As Integer) As Long ' ' 指定基数の進数を10進数に変換 ' Const num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" Dim i As Integer, k As Integer Dim s As String If 基数 <= 1 Then NumToDec = CVErr(xlErrValue) Exit Function End If NumToDec = 0 For i = 1 To Len(数値) s = Mid(数値, Len(数値) - i + 1, 1) If Val(s) >= 基数 Then '基数以上の数値がある! NumToDec = CVErr(xlErrValue) Exit For End If k = InStr(1, num, s, vbTextCompare) If k = 0 Then Exit For NumToDec = NumToDec + (k - 1) * 基数 ^ (i - 1) Next i End Function