|
▼質問者 さん:
>データ型を変更したのですが、Hex関数の部分がどうしても
>オーバーフローを回避する方法を教えて下さい。
こんな風な関数でどうですか
Sub TestvbDec2Hex() ' テストしたもの
Debug.Print vbDec2Hex(CDec(2 ^ 8) - 1)
Debug.Print vbDec2Hex(CDec(2 ^ 32) - 1)
Debug.Print vbDec2Hex(CDec("1234567890123456"), 16)
End Sub
'********************************************************
'*** TargetValeu : 変換データ
'*** col : 表示桁数 8桁標準
'********************************************************
Public Function vbDec2Hex(ByVal TargetValue As Variant, _
Optional ByVal col As Long = 8)
Const Base As Long = 16
Const CharList As String = "0123456789ABCDEF"
Dim nVal As Variant
Dim vVal As Variant
Do
nVal = Fix(TargetValue / Base)
vVal = (TargetValue - (nVal * Base))
vbDec2Hex = Mid(CharList, vVal + 1, 1) & vbDec2Hex
TargetValue = nVal
Loop Until TargetValue = 0
If Len(vbDec2Hex) < col Then
vbDec2Hex = Right(String(col, Left(CharList, 1)) & vbDec2Hex, col)
End If
End Function
|
|