質問: vbaで進数変換 マクロ内で、 16進数から2進数、2進数から10進数といったように 変換したいんですけど、うまいほうほうないですか? シート上ならhex2decとか使えるんですけど、 10桁までしかできないし、できればマクロ内でやりたいんです。 でも、macro中には10進数から16進数とかはあるんですけど、逆が見当たらないんです。 ちなみにworksheetfunctionにもありません。 助けてください。
回答: こんな感じでどうでしょ? 16進→数値 val("&hff") 数値→16進 hex$(255) 8進→数値 val("&o377") 数値→8進 oct$(377) 数値→2進 public function num2bin(value as variant) as variant dim nval as long dim i as long if isnumeric(value) = false then num2bin = null exit function end if nval = val(value) for i = 15 to 0 step -1 num2bin = num2bin & ((nval and 2 ^ i) / (2 ^ i)) next i end function 2進→数値 public function bin2num(value as variant) as variant dim i as long dim strval as string dim cursor as long if isnumeric(value) = false then bin2num = null exit function end if strval = cstr(value) cursor = 0 for i = len(strval) to 1 step -1 select case mid$(strval, i, 1) case "0" case "1" bin2num = bin2num + (2 ^ cursor) case else bin2num = null exit function end select cursor = cursor + 1 next i end function