VBAで文字列を数値に変換する方法!数値変換判定も!

VBAで文字列を数値に変換する方法!数値変換判定も!

VBAで文字列を数値に変換したいときはないでしょうか。


けど、そんな中で悩むことは、

・VBAで文字列を数値に変換したいが方法がよくわからない
・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

タカヒロ
タカヒロ
Cint関数の変換可能な範囲は-32,768 から32,767までなので40000を指定するとオーバーフローとなり、エラーとなります。3万を超えるような数値を扱う場合はこちらのLong型で処理するようにしましょう。

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

タカヒロ
タカヒロ
CLng関数の変換可能な範囲は-2,147,483,648から2,147,483,647までなので3000000000を指定するとオーバーフローとなり、エラーとなります。3万を超えるような数値を扱う場合はこちらのDouble型で処理するようにしましょう。

Vall関数で文字列を数値に変換する

Val関数で文字列を数値に変換する方法になります。

構文

Val関数については以下の通りとなります。


構文 Val(string)
説明 Val関数は文字列stringから数値を取り出します。文字列の先頭から数値文字列が途切れるところまでを数値として解釈し、それをDouble型の数値に変換します。

タカヒロ
タカヒロ
CDbl関数とおなじくDouble型の数値を扱うことができます。

サンプルコード

文字列”123abc456″を数値に変換するサンプルコードです。

Sub 文字列を数値に変換4()
    Dim strNum As String
    Dim dblNum As Double
    
    strNum = "123abc456"
    dblNum = Val(strNum)
    Debug.Print dblNum
End Sub

結果です。

123

タカヒロ
タカヒロ
Val関数は文字列中の途中で数値が途切れた場合でもエラーにならずに処理を継続するため、数値と文字が混在する可能性のある文字列を数値に変換する場合に有効です。型指定をしたい場合はCInt、CLng、CDblのどれかを使用したほうがよいでしょう。

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で文字列を数値に変換する方法
・VBAで文字列を数値に変換できるか判定する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です