VBA Hex 関数:数値を 16 進数に変換する

はじめに

Excel VBA マクロの Hex 関数から数値を 16 進数に変換する方法を紹介します。

Hex 関数は、指定した数値を 16 進数の文字列に変換します。

255 なら FF を返します。

&HFF のように、頭に &H を付けて 16 進数の数値を入力できます。

Val 関数」から、&HFF のように、頭に &H を付けた 16 進数の文字列を 10 進数に変換できます。

  • 目次
    • Hex 関数
    • 解説
    • 使用例

Hex 関数

Hex(数値)
数値を 16 進数の文字列に変換します。

引数「数値」Long 型の範囲の整数を指定します。
戻り値の型文字列型 (String)

16 進数とは

16 進数とは 0 ~ 9A ~ F を使って、次のように 16 で桁が繰り上がる数値のことです。

10 進数 16 進数
00
11
22
・・・
88
99
10A
11B
12C
13D
14E
15F
1610
1711
1812

一般的に使っている数値は 10 で繰り上がるので 10 進数です。

解説

引数「数値」が小数を含む値のときは、整数に偶数丸めしてから 16 進数に変換します。

変換できる数値の範囲は、Long 型の範囲 -2,147,483,648 ~ 2,147,483,647 の間です。

範囲外の値を指定すると「エラー 6 オーバーフローしました。」が発生します。

数値以外の値を指定すると「エラー 13 型が一致しません。」が発生します。

16 進数を 10 進数に変換

16 進数の文字列を 10 進数に変換するには &HFF のように、頭に &H を付けた文字列を「Val 関数」で変換します。

16進数を入力

16 進数の数値をコードで入力するには &HFF のように、頭に &H を付けます。

使用例

16 進数に変換する。

Dim s As String
s = Hex(9)
Debug.Print(s) ' 9

s = Hex(10)
Debug.Print(s) ' A

s = Hex(15)
Debug.Print(s) ' F

s = Hex(16)
Debug.Print(s) ' 10

s = Hex(255)
Debug.Print(s) ' FF

s = Hex(-1)
Debug.Print(s) ' FFFF

s = Hex(-2)
Debug.Print(s) ' FFFE

s = Hex("2147483648") ' オーバーフロー

s = Hex("Tips")       ' 型が一致しません

16 進数の文字列を 10 進数に変換

Val 関数」を使用して、16 進数を 10 進数に変換できます。

Dim s As String
Dim l As Long

s = Hex(16)       ' 10
l = Val("&H" & s) ' &H10
Debug.Print(l)    ' 16

s = Hex(255)      ' FF
l = Val("&H" & s) ' &HFF
Debug.Print(l)    ' 255

16 進数を入力

16 進数を数値として入力する。

Dim l As Long
l = &H9
Debug.Print(l) ' 9

l = &HA
Debug.Print(l) ' 10

l = &HFF
Debug.Print(l) ' 255