• ベストアンサー

16進法から10進法に変えたい vba

Sub sinsuu() MsgBox Val("f1") End Sub Val関数は、16進法から10進法に変換する関数ではないのでしょうか? 0が返ってきてしまいます。 F1を241に変換するには、どの関数を使うべきでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! No.1さんが紹介してくださっているURLの通り 16進数表示の「F1」を10進数にする場合は Sub sinsuu() MsgBox CLng("&h" & "F1") End Sub といった感じでしょうかね! 仮にA1セルに入っている16進数の「文字列」を10進数で表示する場合は Sub Sample1() MsgBox CLng("&h" & Range("A1")) End Sub のようになると思います。 ※ Val関数は「文字列」を「数値」として有効なデータを返すための関数!という説明がありますので、 「F1」は数値としては認識できないため「0」という表示になると思います。 仮に Val("1F") だと「1」が返るはずです 「1F」を 「10ABC120」等に変えても頭の「10」までしか数値として認識できませんので、 表示されるのは「10」だけです。 途中に文字列がある場合その後の数値はすべて無視されてしまいます。m(_ _)m

IDUBKVIZDIXE
質問者

お礼

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

その他の回答 (2)

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.3

2013版のExcelだとシートの関数にあるので それをVBAから使えます。 Application.WorksheetFunction.Hex2Dec("F0")  以前の版では分析ツールアドインにあったかもしれません。 シートのセルに値を入れて計算させそれをVBAでセルから読み出す手も... 

IDUBKVIZDIXE
質問者

お礼

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

  • mpascal
  • ベストアンサー率21% (1136/5195)
回答No.1
IDUBKVIZDIXE
質問者

お礼

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

関連するQ&A