VBAで文字列を数値に変換したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで文字列を数値に変換するときにエラーチェックをしたいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAで文字列を数値に変換できるか判定する方法
についてまとめます!
もくじ
VBAで文字列を数値に変換する方法
VBAで文字列を数値に変換する方法はいくつかありますので、パターンごとに紹介します。
Cint関数で文字列を数値に変換する
Cint関数で文字列を数値に変換する方法になります。
構文
Cint関数については以下の通りとなります。
構文 | CInt(Expression) |
---|---|
説明 | CInt関数は引数ExpressionをInteger(整数)型に変換します。変換可能な範囲は-32,768 から32,767までです。 |
サンプルコード
文字列”0123″を数値に変換するサンプルコードです。
Sub 文字列を数値に変換1()
Dim strNum As String
Dim intNum As Integer
strNum = "0123"
intNum = CInt(strNum)
Debug.Print intNum
End Sub
結果です。
123
CLng関数で文字列を数値に変換する
CLng関数で文字列を数値に変換する方法になります。
構文
CLng関数については以下の通りとなります。
構文 | CLng(Expression) |
---|---|
説明 | CLng関数は引数ExpressionをLong(長整数)型に変換します。変換可能な範囲は-2,147,483,648から2,147,483,647までです。 |
サンプルコード
文字列”040000″を数値に変換するサンプルコードです。
Sub 文字列を数値に変換2()
Dim strNum As String
Dim longNum As Long
strNum = "040000"
longNum = CLng(strNum)
Debug.Print longNum
End Sub
結果です。
40000
CDbl関数で文字列を数値に変換する
CDbl関数で文字列を数値に変換する方法になります。
構文
CDbl関数については以下の通りとなります。
構文 | CDbl(Expression) |
---|---|
説明 | CDbl関数は引数ExpressionをDouble(倍精度浮動小数点数)型に変換します。変換可能な範囲は約-1.79E308から約1.79E308までです。 |
サンプルコード
文字列”03000000000″を数値に変換するサンプルコードです。
Sub 文字列を数値に変換3()
Dim strNum As String
Dim dblNum As Double
strNum = "03000000000"
dblNum = CDbl(strNum)
Debug.Print dblNum
End Sub
結果です。
3000000000
Vall関数で文字列を数値に変換する
Val関数で文字列を数値に変換する方法になります。
構文
Val関数については以下の通りとなります。
構文 | Val(string) |
---|---|
説明 | Val関数は文字列stringから数値を取り出します。文字列の先頭から数値文字列が途切れるところまでを数値として解釈し、それをDouble型の数値に変換します。 |
サンプルコード
文字列”123abc456″を数値に変換するサンプルコードです。
Sub 文字列を数値に変換4()
Dim strNum As String
Dim dblNum As Double
strNum = "123abc456"
dblNum = Val(strNum)
Debug.Print dblNum
End Sub
結果です。
123
VBAで文字列を数値に変換できるか判定する方法
次にVBAで文字列を数値に変換できるか判定する方法について説明をします。
VBAで文字列が数値に変換できるかどうか判定するには、IsNumeric関数を使います。
IsNumeric関数は引数に指定した文字列が数値に変換可能かどうか判定し、数値に変換可能な場合はTrueを、それ以外の場合はFalseを返します。
文字列を数値に変換できるか判定するサンプルコード
文字列を数値に変換できるか判定するサンプルコードは以下の通りです。
Sub 文字列を数値に変換できるか判定()
Dim strNum As String
strNum = "03000000000"
If IsNumeric(strNum) Then
Debug.Print "数値に変換できます。"
Else
Debug.Print "数値に変換できません!"
End If
End Sub
Long型の上限を超える数値に変換できるかチェックする
Long型の上限を超える”03000000000″を数値に変換できるかチェックしてみましょう。
結果
"数値に変換できます。"
こちらは変換できる結果になりましたね。
IsNumeric関数はDouble型の数値をチェックできるということが確認できました。
数字と文字の混合を数値に変換できるかチェックする
数字と文字の混合”123abc456″を数値に変換できるかチェックしてみましょう。
結果
"数値に変換できません!"
こちらは変換できない結果になりました。
となると、Vall関数では数字と文字の混合文字列は対応しているので、Vall関数を利用する判定に使用するにはすこし制約が強いかもしれません。
IsNumeric関数を使用した数値変換判定判定はCInt、CLng、CDblのように数字文字列だけを数値に変換したい場合に適しているといえるでしょう。
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで文字列を数値に変換できるか判定する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す