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

VBAで4桁の16進数(FFFFとか)を2進数(1111 1111 1111 1111とか)に変換して変換した2進数を1桁づつセルに表示させるには、どうしたらいいでしょうか?ワークシート上だと8桁までしか対応してないようで、左右8桁づつわけてHEX2BINを使ってとりあえず変換する事は、できましたがVBAでマクロを組んで行いたいです。例えばA1に16進数を入れA2~P2に2進数を1桁づつ表示させたいです。よろしくお願いします。

A 回答 (3件)

現データ(16進数)がどういう形で入力されているか質問に書いてないのは、質問者と回答者と同一視の錯覚だ。

そんなに多い場合に関する質問ではないし実例を示すべき。
無駄になるかも知れないが勝手に考えた。
例データ
下記のA列
A列  B-Q列は結果
FFFF1111111111111111
3FBC0011111110111100
23AF0010001110101111
コード
このタイプの問題は千差万別のやり方があると思うので、個人色が出てしまって、1例を挙げるのは気が進まないが。
特色は、テーブル方式変換といえようか。
Sub test01()
Range("b1:Q100").NumberFormatLocal = "@"
d = Range("A65536").End(xlUp).Row
For k = 1 To d
x = Cells(k, "A")
j = 2 'B列
s = "0123456789ABCDEF"
t = "0000000100100011010001010110011110001001101010111100110111101111"
ss = ""
For i = 1 To Len(x)
p = InStr(s, Mid(x, i, 1))
Cells(k, j) = Mid(t, (p - 1) * 4 + 1, 1): j = j + 1
Cells(k, j) = Mid(t, (p - 1) * 4 + 2, 1): j = j + 1
Cells(k, j) = Mid(t, (p - 1) * 4 + 3, 1): j = j + 1
Cells(k, j) = Mid(t, (p - 1) * 4 + 4, 1): j = j + 1
Next i
Next k
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。

勉強になりました。

お礼日時:2012/07/12 22:52

Private Sub CommandButton1_Click()


  Dim i As Integer
  For i = 0 To 15
  Cells(2, 17 - i).Value = Str((Val("&h" & Range("A1").Value) And (2 ^ i)) / (2 ^ i))
  Next
End Sub
    • good
    • 0

VBAには10進数⇒8進数と10進数⇒16進数の変換を行なう関数はありますけど16進数⇒2進数などの変換関数は無いみたいですね。

VBAで変換を行いたい場合は自分でルーチンを組むしか無いみたいです。

>http://fukkey.dyndns.org/pins/vb/011004/31105.html

上記のページに2~36の範囲内でN進数⇔M進数の変換ルーチンが載っています。これを利用して後は1桁ずつセルに表示する部分を作れば良いです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

参考にさせていただきます。

お礼日時:2012/07/12 22:51

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