進数変換リンク
他のn進数からn進数への変換は以下をご参照ください。
VBAで2進数から8進数へ変換する
VBAで2進数から10進数へ変換する
VBAで2進数から16進数へ変換する
VBAで8進数から2進数へ変換する
VBAで8進数から10進数へ変換する
VBAで8進数から16進数に変換する
VBAで10進数から2進数へ変換する
VBAで10進数から8進数へ変換する
VBAで10進数から16進数へ変換する
VBAで16進数から2進数へ変換する
VBAで16進数から8進数へ変換する
VBAで16進数から10進数へ変換する
8進数から10進数へ変換する考え方
8進数から10進数に変換するには、8進数の各桁に8の乗数を掛けて10進数に変換し、各桁の変換後の10進数を連結することで変換が完了です。
このときの8の乗数は第一位が0で、左に行くにしたがって1ずつ上がります。
例:8進数文字列”37″を10進数に変換する
右側から1文字ずつ取得すると「”3″、”7″」になります。これを1文字ずつ10進数に変換します。
“3”に8の1乗(=8)を掛けて、10進数”24″に変換。
“7”に8の0乗(=1)を掛けて、10進数”7″に変換。
24+7で、10進数の31になります。
8進数から10進数に変換する関数
第一引数に変換元となる8進数文字列を指定し、第二引数が変換後の10進数文字列が返却されます。
例えば第一引数に”37″とセットした場合は第二引数に”31″がセットされて関数が終了します。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27  | 
						'// 引数1   (IN)    :8進数文字列 '// 引数2   (OUT)   :変換後の10進数文字列 Sub OctToDec(a_sOct As String, a_sDec As String)     Dim iLen    As Integer      '// 8進数文字列     Dim i       As Integer      '// ループカウンタ     Dim iOct    As Integer      '// 8進数値     Dim iDec    As Long         '// 10進数値     '// 引数8進数文字列が未設定の場合は処理を抜ける     If (a_sOct = "") Then         Exit Sub     End If     '// 8進数文字列長を取得     iLen = Len(a_sOct)     '// 8進数文字列を1文字ずつループ     For i = 1 To iLen         '// 8進数文字列の1文字を数値で取得         iOct = CInt(Mid(a_sOct, i, 1))         '// 8進数値に8の乗数を掛けて10進数に変換して10進数値に加算         iDec = iDec + CStr(iOct * 8 ^ (iLen - i))     Next     a_sDec = CStr(iDec) End Sub  | 
					
コードは8進数から10進数への変換の考え方をそのまま書いているのでコメントの内容で処理は理解できると思います。
難しい点としたら乗数の^はあまり使わない演算子なところぐらいでしょうか。
使い方
8進数文字列をいくつか持つ配列を作って、ループでOctToDec関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						Sub OctToDecTest()     Dim a As String     Dim b As String     Dim ar     ar = Array("1", "2", "3", "4", "5", "6", "7", "10", "11", "12", "13", "14", "15", "16", "17", "20", "21", "22", "23", "24", "25", "26", "27", "30", "31", "32", "33", "34", "35", "36", "37", "40", "41", "42", "43", "44", "45")     Dim i     For i = 0 To UBound(ar)         a = ar(i)         Call OctToDec(a, b)         Debug.Print a & " " & b     Next End Sub  | 
					
実行結果
1 1
2 2
3 3
4 4
5 5
6 6
7 7
10 8
11 9
12 10
13 11
14 12
15 13
16 14
17 15
20 16
21 17
22 18
23 19
24 20
25 21
26 22
27 23
30 24
31 25
32 26
33 27
34 28
35 29
36 30
37 31
40 32
41 33
42 34
43 35
44 36
45 37