投稿者 KOZ  (社会人) 投稿日時 2024/12/18 01:12:46
256 ^ i の部分が Double なので誤差が出てるのでしょう。

Sub ByteArrayToDecimal()
    Dim byteArray(11) As Byte
    Dim decimalValue As Variant
    Dim i As Long
    Dim tmp As Variant
    For i = 0 To 11
        byteArray(i) = &HFF
    Next i
    tmp = CDec(1 / 256)
    For i = 0 To 11
        tmp = tmp * 256
        decimalValue = decimalValue + CDec(byteArray(i)) * tmp
    Next i
    Debug.Print "Decimal Value: " & decimalValue
    Debug.Print "Decimal MaxValue: " & CDec("79,228,162,514,264,337,593,543,950,335")
End Sub


結果:
Decimal Value: 79228162514264337593543950335
Decimal MaxValue: 79228162514264337593543950335