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