Excel VBA質問箱 IV

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

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


12705 / 76734 ←次へ | 前へ→

【69545】Re:10進→16進8桁への変換
発言  ichinose  - 11/7/31(日) 0:23 -

引用なし
パスワード
   こんばんは。

>セルの数式を使用せずにマクロの中で
>10進数の値を16進数に変換が必要で以下の数式を使用しています。
>最初のうちはLong型の範囲でよかったのですが、
>最大2^32-1=0xFFFFFFFFのまで必要になりました。
>そのため、オーバーフローを起こしてしまいます。
もっと桁数が必要なら、
16進変換をVBAでシミュレートすれば良いのですが
(10進数を16でどんどん割っていって余りを逆に繋げれば良いのですが、
ゆとり教育世代はやらないんだってねえ、中学で)、
4バイトで足りる数字なら・・・、


Function vbDec2Hex(num As Double, Optional n As Byte = 0) As String
  On Error Resume Next
  Dim wk As Long
  wk = CLng(num)
  If Err.Number <> 0 Then
    wk = -(2 ^ 32 - num)
  End If
  vbDec2Hex = Hex$(wk)
  vbDec2Hex = String(n - Len(vbDec2Hex), "0") & vbDec2Hex
  On Error GoTo 0
End Function


↑こんな関数では?

Sub test()
  MsgBox vbDec2Hex(256)
  MsgBox vbDec2Hex(255, 4)
  MsgBox vbDec2Hex(4294967295#)
End Sub


試してみてください。

Hexで80000000以上の数は、負の数に置き換えてから、Hex関数を使います。


>
>データ型を変更したのですが、Hex関数の部分がどうしても
>オーバーフローを回避する方法を教えて下さい。
7 hits

【69542】10進→16進8桁への変換 質問者 11/7/30(土) 21:34 質問
【69543】Re:10進→16進8桁への変換 kanabun 11/7/30(土) 21:44 発言
【69545】Re:10進→16進8桁への変換 ichinose 11/7/31(日) 0:23 発言
【69547】Re:10進→16進8桁への変換 ichinose 11/7/31(日) 8:59 発言
【69548】Re:10進→16進8桁への変換 Yuki 11/7/31(日) 18:07 発言
【69550】Re:10進→16進8桁への変換 jyun 11/7/31(日) 18:57 回答
【69560】Re:10進→16進8桁への変換 質問者 11/8/1(月) 20:46 お礼

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