Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10221 / 13644 ツリー ←次へ | 前へ→

【23017】10進数から2進数に変換 あいんすと 05/3/10(木) 0:24 質問[未読]
【23018】Re:10進数から2進数に変換 はるか 05/3/10(木) 3:23 回答[未読]
【23019】Re:10進数から2進数に変換 りすりす 05/3/10(木) 3:33 発言[未読]
【23020】Re:10進数から2進数に変換 りすりす 05/3/10(木) 3:39 発言[未読]
【23022】Re:10進数から2進数に変換 ichinose 05/3/10(木) 8:19 発言[未読]
【23024】Re:10進数から2進数に変換 でれすけ 05/3/10(木) 11:34 発言[未読]
【23049】Re:10進数から2進数に変換 あいんすと 05/3/10(木) 23:49 お礼[未読]

【23017】10進数から2進数に変換
質問  あいんすと  - 05/3/10(木) 0:24 -

引用なし
パスワード
   スイマセン10進数から2進数に変換するマクロを教えて下さい。
VBAでは10進数→2進数に変換する"DEC2BIN"は使えないみたいで、
どうしたらよいのか分かりません。

【23018】Re:10進数から2進数に変換
回答  はるか  - 05/3/10(木) 3:23 -

引用なし
パスワード
   ▼あいんすと さん:
>スイマセン10進数から2進数に変換するマクロを教えて下さい。
>VBAでは10進数→2進数に変換する"DEC2BIN"は使えないみたいで、
>どうしたらよいのか分かりません。

こんな時間ですみません。
例えばこんな感じで如何でしょう?
特別なVBを利用しているわけではなく、
10進←→2進の変換ロジックで作る自作関数でしかないですが。

Function Dec2Bin(ByVal dec As Integer) As String
  Dim tmp As String
  
  Do Until dec < 1
    tmp = dec / 2 - dec \ 2
    If tmp = 0 Then
      Bin = "0" & Bin
    Else
      Bin = "1" & Bin
    End If
    dec = dec \ 2
  Loop
  Dec2Bin = Bin
End Function

【23019】Re:10進数から2進数に変換
発言  りすりす  - 05/3/10(木) 3:33 -

引用なし
パスワード
   ▼あいんすと さん:
>スイマセン10進数から2進数に変換するマクロを教えて下さい。
>VBAでは10進数→2進数に変換する"DEC2BIN"は使えないみたいで、
>どうしたらよいのか分かりません。

こんばんは、
8 進数と16はあるようですけど無いみたいですね。
下の2つがバリアントで返すのでとりあえず
CBin関数を同じ形式にしました。
string型になっていますので、文字としてつかってください。
( ビットのonoffが知りたいだけなら、 ビットシフトなど使うと簡単にわかります。)


8 進数
Oct(number)

16 進数
Hex(number)


実行
 CBin(4)
 CBin(22)
結果
 100
 10110

Function CBin(Value As Long) As Variant
 Dim TempStr As String
 Dim i As Long
 TempStr = ""
 i = Value
 If i <= 0 Then TempStr = "0"
 Do While (i > 0)
  TempStr = CStr(i Mod 2) + TempStr
  i = i \ 2
 Loop
 CBin = TempStr
End Function

【23020】Re:10進数から2進数に変換
発言  りすりす  - 05/3/10(木) 3:39 -

引用なし
パスワード
   ▼あいんすと さん:
>スイマセン10進数から2進数に変換するマクロを教えて下さい。
>VBAでは10進数→2進数に変換する"DEC2BIN"は使えないみたいで、
>どうしたらよいのか分かりません。

あっ 解説がいるのでしたら
ここを参考にしてください

http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm

【23022】Re:10進数から2進数に変換
発言  ichinose  - 05/3/10(木) 8:19 -

引用なし
パスワード
   あいんすと さん、皆さん、おはようございます。

>スイマセン10進数から2進数に変換するマクロを教えて下さい。
>VBAでは10進数→2進数に変換する"DEC2BIN"は使えないみたいで、
>どうしたらよいのか分かりません。
ワークシート関数としてDec2Binが使用できている設定になっているのなら

Sub test()
  vv = 6
  MsgBox Evaluate("dec2bin(" & vv & ")")
End Sub

これで使用可能かと思います。

または、「ツール」---「アドイン」とクリックして、
アドインとして、「分析ツール-VBA」にチェックを入れて下さい

その後、VBEにて、atpusrc1.xlsに参照設定を行えば、

Sub test()
  vv = 6
  msgbox dec2bin(vv)
End Sub

というコードが記述可能になります。

【23024】Re:10進数から2進数に変換
発言  でれすけ  - 05/3/10(木) 11:34 -

引用なし
パスワード
   こんにちは。
マイナスの値を与えてもいいようにしてみました。

Function dec2bin(ByVal v As Long, Optional n As Long = 10)
Dim ret As String, Lc As Long
ret = ""
If v >= 0 Then n = Int(Log(v) / Log(2)) + 1
If v < 0 Then v = 2 ^ n + v
Do While n > 0
ret = CStr(v Mod 2) & ret
v = v \ 2
n = n - 1
Loop
dec2bin = ret
End Function

【23049】Re:10進数から2進数に変換
お礼  あいんすと  - 05/3/10(木) 23:49 -

引用なし
パスワード
   複数の回答ありがとうございます。

10221 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free