進数変換リンク
他の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進数へ変換する
10進数から16進数へ変換する考え方
10進数から16進数への変換は、Hex関数が用意されているためそれを使います。
10進数から2進数に変換して、その2進数を16進数に変換する方法などでも構いませんが、用意されている関数を使った方が処理速度は速いです。
10進数から16進数に変換する関数
第一引数に変換元となる10進数文字列を指定し、第二引数が変換後の16進数文字列が返却されます。
例えば第一引数に”37″とセットした場合は第二引数に”25″がセットされて関数が終了します。
1 2 3 4 5 6 7 8 9 10 |
'// 引数1 (IN) :10進数文字列 '// 引数2 (OUT) :変換後の16進数文字列 Sub DecToHex(a_sDec As String, a_sHex As String) '// 引数の10進数文字列が未設定の場合は処理せずに抜ける If (a_sDec = "") Then Exit Sub End If a_sHex = Hex(a_sDec) End Sub |
事前に引数のチェックをしていますが、変換処理はHex関数をそのまま使っています。
使い方
10進数文字列をいくつか持つ配列を作って、ループでDecToHex関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub DecToHexTest() 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 DecToHex(a, b) Debug.Print a & " " & b Next End Sub |
実行結果
1 1
2 2
3 3
4 4
5 5
6 6
7 7
10 A
11 B
12 C
13 D
14 E
15 F
16 10
17 11
20 14
21 15
22 16
23 17
24 18
25 19
26 1A
27 1B
30 1E
31 1F
32 20
33 21
34 22
35 23
36 24
37 25
40 28
41 29
42 2A
43 2B
44 2C
45 2D