16進数の原理はご存知ですよね?
だったらできるんじゃないですか?
Function 十進変換(ByVal ヘキサ As String) As Double
Dim 位置 As Long
Dim 符号 As Long
Dim 数値 As Long
Dim 結果 As Double
'12文字限定
For 位置 = 1 To 12
'位置の示す文字を数値化する
数値 = Val("&H" & Mid(ヘキサ, 位置, 1))
'先頭の場合は符号を設定する
If 位置 = 1 Then
If 数値 > 7 Then 符号 = 15
End If
'結果に加算する
結果 = 結果 * 16 + (数値 Xor 符号)
Next
If 符号 Then 結果 = -結果 - 1
'結果を返す
十進変換 = 結果
End Function
16進への変換も同じです
Function 十六進変換(ByVal 数値 As Double) As String
Dim 位置 As Long
Dim 符号 As Long
Dim 繰越 As Long
Dim 剰余 As Long
Dim 結果 As String
'数値がマイナスならば正にする
If 数値 < 0 Then
数値 = -数値
符号 = 15
繰越 = 1
End If
'12文字限定
For 位置 = 1 To 12
'16で割った剰余を求める
剰余 = 数値 - Fix(数値 / 16) * 16
'数値を更新する
数値 = Fix(数値 / 16)
'負の場合は反転して繰越を加算する
If 符号 Then
剰余 = (剰余 Xor 符号) + 繰越
'15を越えたら繰り越す
If 剰余 > 15 Then
剰余 = 0
繰越 = 1
Else
繰越 = 0
End If
End If
'文字化して前方に付け加える
結果 = Hex(剰余) & 結果
Next
'結果を返す
十六進変換 = 結果
End Function