'符号なし整数型をDouble型に変換する関数 Private Function UIntToDbl(ByVal uIntValue As Long) As Double If uIntValue < 0 Then UIntToDbl = 2# ^ 31 + (uIntValue And &h7fffffff) Else UIntToDbl = CDbl(uIntValue) End If End Function 'Double型を符号なし整数型に変換する関数 '符号なし整数型の範囲(0から2^32-1)のチェックは行っていません。 Private Function DblToUInt(ByVal dblValue As Double) As Long Dim i As Long i = CLng(dblValue - (2# ^ 31)) If i >= 0 Then DblToUInt = (&h80000000 Or i) Else DblToUInt = CLng(dblValue) End If End Function Sub Test() MsgBox Hex$(DblToUInt(UIntToDbl(&h80000001))) End Sub