投稿/コメントを表示します。

Functionプロシージャで32bitの2進数を10進数に変換する為のマクロを作成しましたが、「オーバーフロー」のエラーとなります。
引数Valueには「11000000101010000000000100000000」が渡される想定です。戻り値を長整数型にしているので、数値は範囲内だと思いますが、オーバーフローの解消方法をご教授頂けないでしょうか。
Function Convert2to10(Value As String) As Long
    Dim Ret As Long
    Dim K As Long
    Dim X As Long
    For K = 1 To Len(Value)
        If Mid(Value, Len(Value) - K + 1, 1) = "1" Then
            X = 2 ^ (K - 1)
            Ret = Ret + X
        End If
    Next K
    Convert2to10 = Ret
End Function

2020/07/02 15:27