VBAを操作していると、計算に使用したい!などの理由から、文字列を数値に変換したくなる場面は多くなると思います。
そこで今回は、Val関数を使って文字列を数値に変換する方法を紹介します。
整数・小数をそれぞれ変換した際のサンプルケースや、数字以外の文字列が含まれていた場合の対処法についても解説していきます。
それではさっそく見てみましょう!
文字列を数値に変換するVal関数とは?
まず初めに、Val関数の使い方について解説します。
書き方はとてもシンプルで、以下のように記述することで簡単に文字列を数値に変換することができます。
【基本構文】
Val(文字列)
変換後の数値は、Integer型やDouble型などに変換されます。
サンプルコードを交えて使い方を解説
次は、整数に変換する場合と小数に変換する場合について、それぞれサンプルコードを交えながら解説していきたいと思います。
文字列を整数に変換する場合のサンプル
まずは、整数を変換した場合のサンプルコードを見てみましょう。
整数の文字列をVal関数を使って変換し、その結果をダイアログで表示してみます。
【サンプルコード】
Sub intTest()
Dim strInt As String
strInt = "100"
'Val関数で変換
Dim intSample As Integer
intSample = Val(strInt)
'変換した値を表示
MsgBox intSample & ":" & TypeName(intSample)
End Sub
【実行結果】
TypeName関数は、指定した変数の型を返してくれる関数です。
上に表示されているとおり、変換後の値が文字列から数値に変わっていることが分かると思います。
文字列を小数に変換する場合のサンプル
同じ要領で、今度は小数の文字列を数値に変換してみます。
実際のサンプルコードを見てみましょう。
【サンプルコード】
Sub doubleTest()
Dim strDouble As String
strDouble = "5.5"
'Val関数で変換
Dim dblSample As Double
dblSample = Val(strDouble)
'変換した値を表示
MsgBox dblSample & ":" & TypeName(dblSample)
【実行結果】
小数点がついた数値を扱っているので、型はDouble型を指定しています。
Integer型など、小数点以下が表示されない型を指定してしまうと、以下のように変換後の数値が元の値から変わってしまうので注意が必要です。
【Integer型での実行結果】
変換したい文字列に、整数と小数のどちらが入るか分からない場合がある時には、あえて変数の型を指定しないのも一つの方法です。
その場合も、文字列を数値に変換することはできるので、状況に合わせて使い分けるといいでしょう。
数値以外の文字列が含まれていた場合はどうする?
変換する文字列が数字のみの場合は、これまで解説した通りで問題ありませんが、中には他の文字列が含まれているケースもあるかと思います。
以下にサンプルを用意したので、実際に数値以外の文字列が含まれていた場合について、いくつかのパターンを確認してみましょう。
【サンプルコード】
Sub strTest()
Dim str As String, yen As String, dollar As String
Dim intMsg As Integer, intYen As Integer, intDollar As Integer
str = "ひゃくえん"
yen = "100円"
dollar = "$100"
'Val関数で変換
intMsg = Val(str)
intYen = Val(yen)
intDollar = Val(dollar)
'メッセージで確認
MsgBox str & ":" & intMsg & vbCrLf & _
yen & ":" & intYen & vbCrLf & _
dollar & ":" & intDollar
End Sub
【実行結果】
Val関数の基本的な仕様として、文字列中に数字以外の文字が含まれている場合、見つかった最初の段階で読み込みが中止されます。その時点で変換できる数値があれば読み込んだ分の数値を、なければ0を結果として返します。
先ほどの結果を見ると分かると思いますが、全て数字以外の文字で構成された「ひゃくえん」の文字列だけでなく、先頭のみが数字でない「$100」の文字列も同様に、0へと変換されています。これは、上で説明した仕様によるものです。
また、数字以外の文字は変換されずに切り捨てられるので、「100円」の文字列は 100が結果として返されています。
このように、数値が含まれない文字列を変換した場合でも、エラーを起こさずに結果を得られる点がVal関数のメリットの一つですが、文字列が数値に変えられるかどうかで処理を分けたい場合もあるかと思います。
その際には、IsNumeric関数を使用すると、事前に数値以外の文字列が含まれているかを判定することができるのでおすすめです。
まとめ
Val関数の使い方についての解説は以上となります。
シンプルな機能ですが、必要になるケースは多いかと思いますので、ぜひとも使いこなして活用していきましょう!
関連記事
VBAの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。