• ベストアンサー

VBAで2進法から10進法に変換させるプログラミング

 何から手がければ良いのかさっぱり分かりません・・・   For next ... を使えばよいのでしょうか?  2進法から10進法に変えることはできるのですが、プログラミングとなるとさっぱりです。詳しく教えてくだされば、嬉しいです。  

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

VBAを実際に使っていませんので、ご参考に http://www.relief.jp/itnote/archives/000925.php

zsdzsdz
質問者

お礼

このサイト素晴らしいですね。ありがとうございます!!

その他の回答 (3)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

2進数は例えばこのように表されます。 11111111 hgfedcba aの部分が1ですから+1 bの部分が1ですから+2 cの部分が1ですから+4    dの部分が1ですから+8 eの部分が1ですから+16 fの部分が1ですから+32 gの部分が1ですから+64 hの部分が1ですから+128        合計 255です。 もし各部分が0ならば+0になります。 ここでMid()関数を利用して for i=1 to 8 n=Mid("11111111",i,1) if n="1" then Total=Total+2^(8-i) '合計に2の(8- i)乗を加える。i=1のとき128 i=2のとき64 else Total=0+Total end-if next i でどうでしょう。

回答No.3

何となく作ってみました。 MsgBox BIN2DEC("10000000") みたいに文字列で与えてください。 入力値のエラーチェックなどは入れてないので実際に使うときはちゃんと完成させてくださいね。 入力値を各桁ごとにばらして、 1桁目には 1を掛ける。2桁目には 2を掛ける。3桁目には 4を掛ける・・・係数をループのたびに 2倍してく感じで。 Function BIN2DEC(aBin As String) As Long ' 入力値の桁数だけ要素を持つ配列を用意 Dim binArray() As Long ReDim binArray(Len(Trim(aBin)) - 1) ' 入力値の各桁を配列に格納する。 ' 入力値の左端から右に向かって処理してます。 Dim i As Long For i = 0 To UBound(binArray) binArray(i) = Mid(aBin, i + 1, 1) Next i Dim coefficient As Long ' 係数 coefficient = 1 Dim dec As Long ' 戻り値 ' 各桁に適切な係数を掛けて足していく。 Dim h As Long For h = UBound(binArray) To 0 Step -1 dec = dec + binArray(h) * coefficient coefficient = coefficient * 2 Next h BIN2DEC = dec End Function

  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんばんは。 簡単なサンプルを。。。 ---------------------------------------------- Sub BinToDeC()  Dim Bin  Dim Dec  Dim N  Bin = 10101010  Dec = 0  For N = 1 To Len(Bin)    Dec = Dec + Mid(Bin, N, 1) * 2 ^ (Len(Bin) - N)  Next N  MsgBox Dec End Sub -------------------------------------------- 以上です。

関連するQ&A