プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

VBAを実際に使っていませんので、ご参考に



http://www.relief.jp/itnote/archives/000925.php
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/04/26 19:47

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

でどうでしょう。
    • good
    • 0

何となく作ってみました。



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
    • good
    • 0

こんばんは。



簡単なサンプルを。。。

----------------------------------------------
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
--------------------------------------------

以上です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!