進数変換リンク
他の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進数へ変換する
16進数から10進数へ変換する考え方
16進数から10進数への変換は、16進数文字列を「”&H1A”」のように頭に”&H”を付けて、それをVal関数で渡すことで変換できます。”&H”は小文字の”&h”でも構いません。
ちなみにVal関数に”&H”ではなく”&O”または”&o”を付けて渡すと8進数文字列として認識します。
16進数から10進数に変換する関数
第一引数に変換元となる16進数文字列を指定し、第二引数に変換後の10進数文字列が返却されます。
例えば第一引数に”1B”とセットした場合は第二引数に”27″がセットされて関数が終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'// 引数1 (IN) :16進数文字列 '// 引数2 (OUT) :変換後の10進数文字列 Sub HexToDec(a_sHex As String, a_sDec As String) '// 引数の16進数文字列が未設定の場合は処理せずに抜ける If (a_sHex = "") Then Exit Sub End If Dim dDec As Double '// 10進数値 '// 10進数値に変換 dDec = Val("&H" & a_sHex) a_sDec = CStr(dDec) End Sub |
使い方
16進数文字列をいくつか持つ配列を作って、ループでHexToDec関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub HexToDecTest() Dim a As String Dim b As String Dim ar ar = Array("FFf", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25") Dim i For i = 0 To UBound(ar) a = ar(i) Call HexToDec(a, b) Debug.Print a & " " & b Next End Sub |
実行結果
FFf 4095
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
10 16
11 17
12 18
13 19
14 20
15 21
16 22
17 23
18 24
19 25
1A 26
1B 27
1C 28
1D 29
1E 30
1F 31
20 32
21 33
22 34
23 35
24 36
25 37