基数変換マクロの修正完了
2進数を3進数に直したい場合、マクロの中で一度2進数から10進数に戻して、もう一度今度は10進数を3進数に変換するように修正しました。追記した命令は全部で4行。再帰の考え方を使ったので、プログラム記載行数の節約にはなりました。(プロの方から見ると格好悪い書き方かも知れませんが。)
とりあえずソースは以下の通り。
Function 基数変換(input_num As Integer, origin_num As Integer, base_num As Integer)
'引数:input_num(基数変換の対象)origin_num(変換元の基数),base_num(変換したい基数)
Dim i As Integer
Dim residue As Integer 'residue:余りの英語表記らしい
Dim quotient As Integer 'quotient:商を意味する英単語
Dim ans '基数変換の答え(一時バッファとしても使用)
If origin_num <> 10 And base_num <> 10 Then
'変換対象が10進数以外ならば10進数に戻せ
input_num = 基数変換(input_num, origin_num, 10)
origin_num = 10
End If
i = 0
ans = 0
Do While input_num >= base_num
residue = input_num Mod base_num
ans = ans + residue * origin_num ^ i
input_num = (input_num - residue) / base_num
i = i + 1
Loop
residue = input_num Mod base_num
ans = ans + residue * origin_num ^ i
基数変換 = ans
End Function
※赤字の部分が変更行です。(4行+コメント行1行)