金曜日, 10月 25, 2024

Excel VBA 33 
10進数を指定したN進数に変換


10進数を指定したN進数に変換します。N進数は2〜36まで対応。

Function DecToBaseN(ByVal num As Long, _
    ByVal base As Integer) As String
Dim digits As String
Dim result As String
Dim remainder As Integer
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ""
Do While num > 0
remainder = num Mod base
result = Mid(digits, remainder + 1, 1) & result
num = num / base
Loop
DecToBaseN = result
End Function

Sub ConvertDecToBaseN()
Dim decNum As Long
Dim base As Integer
Dim result As String
decNum = InputBox("10進数を入力してください:", _
"10進数からN進数への変換")
base = InputBox("基数を入力してください (2-36):", _
"基数の入力")
If base < 2 Or base > 36 Then
MsgBox "有効な基数を入力してください (2-36)。", _
vbExclamation, "エラー"
Exit Sub
End If
result = DecToBaseN(decNum, base)
MsgBox "10進数 " & decNum & " は " & base & _
" 進数で " & result & " です。", vbInformation, "結果"
End Sub

実行したら基準となる10進数を入力します。

続けて変換するN進数を入力すれば・・・

変換結果後表示されます。