重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Sub sinsuu()
MsgBox Val("f1")
End Sub

Val関数は、16進法から10進法に変換する関数ではないのでしょうか?
0が返ってきてしまいます。

F1を241に変換するには、どの関数を使うべきでしょうか?

A 回答 (3件)

こんばんは!



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/05 19:46

2013版のExcelだとシートの関数にあるので


それをVBAから使えます。
Application.WorksheetFunction.Hex2Dec("F0") 


以前の版では分析ツールアドインにあったかもしれません。
シートのセルに値を入れて計算させそれをVBAでセルから読み出す手も... 
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/05 19:46
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/05 19:46

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