Excel VBA:2進数から10進数に変換するコードと実行シート

Excel VBAで2進数から10進数に変換するコードとその解説を掲載しています。



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

前回10進数から2進数に変換するコードを掲載しましたが、ここでは逆に2進数から10進数に変換します。

2進数から10進数への変換は簡単で、2進数の「桁数-1」を掛け、全ての桁の合計が10進数になります。

例えば「110」の場合、「1×2^2」+「1×2^1」+「0×2^0」になるので「4+2+0」から「6」になります。

VBAでは上の流れをそのままプログラムにしています。



Excel VBAで2進数から10進数に変換するコードの解説

■ コマンドボタン1のクリックイベント

  • 引数を「00001111」で、ExBinToDeciプロシージャを呼び出し、結果をB7セルに表示します。

■ ExBinToDeciプロシージャ

  1. Len関数で2進数の桁数を取得します。
  2. Forで桁数分ループします。
  3. Mid関数で1文字取り出します。
  4. 文字が「1」ならば「桁数-1」を掛けて足します。
  5. 文字が「0」でなければ、2進数でないとメッセージを表示し、戻り値を-1にしプロシージャを抜けます。
  6. これを桁数分、繰り返します。
  7. 終了すると合計値を戻します。

Excel VBA 2進数から10進数に変換するコード

Option Explicit

'Excel VBAで2進数を10進数に変換
Public Function ExBinToDeci(bin As String) As Long
    Dim length As Integer
    Dim i As Integer
    Dim ltemp As Long
    Dim stemp As String
    
    ltemp = 0
    length = Len(bin)
    For i = 1 To length
        '1文字取り出し
        stemp = Mid$(bin, i, 1)
        If stemp = "1" Then
            ltemp = ltemp + CLng(2 ^ (length - i))
        ElseIf stemp <> "0" Then
            MsgBox "引数が2進数ではありません。"
            ExBinToDeci = -1
            Exit Function
        End If
    Next i
    ExBinToDeci = ltemp
End Function

Private Sub CommandButton1_Click()
    Range("B7") = ExBinToDeci("00001111")
End Sub

実行結果のExcelシート

■00001111 の 10進数 15 が表示されています。

Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved