Excel VBA 変数のデータ型と型の指定方法

ExcelVBA-基礎編

VBAに限らずプログラミングをするには、変数を扱う事は必須となります。

変数のデータ型と、型の指定方法について説明します。

データ型はたくさんありますので、最初から全て覚える必要はないと思います。

使用頻度の高いデータ型も併せてご紹介したいと思います。

「変数って何?」という方は「Dim、Publicとは? 変数の宣言と適用範囲」をご覧下さい。

データ型

データ型とは?

変数は宣言とはDim 変数名 as データ型」や「Public 変数名 as データ型と書きます。

宣言する際に、「この変数は文字だよ」「この変数は数字だよ」「この変数はだよ」などと明示してあげます。

この文字、数字、日付の部分をデータと言います。

データ型の種類

データ型コード表記データの種類
整数型Integer-32,768~32,767の整数
長整数型Long-2,147,483,648~2,147,483,647の整数
単精度浮動小数点数型Single-3.4028235E+38~-1.401298E-45
1.401298E-45~3.4028235E+38
倍精度浮動小数点数型Double-1.79769313486232E308~-4.94065645841247E-324
通貨型Currency-922,337,203,685,477.5808~922,337,203,685,477.5807
の固定小数点数
日付型Date日付:西暦100年1月1日~西暦9999年12月31日
時刻:0:00:00~23:59:59
文字列型String任意の長さの文字列
ブール型BooleanTrueまたはFalse
バイト型Byte0~255までの整数
オブジェクト型Objectオブジェクト
バリアント型Variantすべてのデータ

一番下のVariant型は全てのデータ型を格納できます。

また、Varinatは「as Varinat」を省略して 「Dim 変数名」のみで記載することも可能です。

最初に覚えるのはこの3つ

データ型はたくさんありますので、慣れるまではこの3つで良いと思います。

  • 文字列:String
  • 整数:Long
  • なんでも:Variant

慣れてきたら、他のデータ型を徐々に覚えていくと良いと思います。

個人的にはDouble(小数)、Date(日付)、Boolean(True/False)もよく使用します。

データ型の指定方法

変数を1つずつ宣言

データ型はDim 変数名 as データのas の後ろの型の部分で指定します。

myStrとmyIntは変数名ですので、任意です。

Sub Sample1()
    Dim myStr As String '文字列型
    Dim myInt As Long '整数型
    
    myStr = "あいうえお" '文字を格納(※文字は""で囲います)
    myInt = 12345 '数値を格納    
    MsgBox myStr & myInt'MsgBoxはダイアログボックスに表示する関数です。
End Sub

上記コードは各変数を宣言して、それぞれデータ型に合わせて文字列や数字を格納して、最後にMsgBoxで変数を結合して、メッセージボックスに表示させるコードです。

同じデータ型をまとめて宣言

次の様に同じ型をたくさん宣言する場合には、「カンマ」で区切ることで変数を連続して記載出来ます。

Sub Sample2()
    Dim myStr1 As String, myStr2 As String '文字列型
    Dim myInt1 As Long, myInt2 As Long '整数型
    
    myStr1 = "あいうえお" '文字を格納(※文字は""で囲います)
    myInt1 = 12345 '数値を格納    
    myStr2 = "かきくけこ" '文字を格納(※文字は""で囲います)
    myInt2 = 678910 '数値を格納    
    MsgBox myStr1 & myInt1 & myStr2 & myInt2
End Sub

上記コードも同様に各変数に文字列や数字を格納して、最後に結合してメッセージボックスへ表示させるコードになります。

データ型を指定する理由

何でも対応出来るVariantがあるのに、なぜわざわざLongStringなど指定する必要があるのでしょう。

正直なところ、一部例外はありますが「絶対に厳密に型指定しないとダメ!」という理由はないと思います。

VBA以外のプログラム言語にはデータ型まで宣言する必要がない言語もあるくらいです。

個人的な見解としては予め型の指定がされていると、可読性が高く読みやすく感じます。

特に計算が多いコードや、連結が多いコードを読むときに、この変数には数字が入っているとか、この変数には文字列が入っていると認識出来るだけでも、かなりコードの挙動をイメージしやすくなります。

もし、全てVariantだと、前後のコードから変数にはどんなデータが入るのかを読み取る作業が無意識にも発生します。(意外と疲れます。)

また、エラーの検知も早くなる気がします

この変数には文字列であるべきとか、数値であるべきと明確なルールが必要な処理の時に 、型を指定する事で違う型のデータが代入されそうになった時にエラーが発生します。

Variantだとエラーが発生しないため、エラーをすぐに検知出来なかったりします。

このような理由で、個人的には型の指定をした方が良いのではないかなと思います。

まとめ

変数は、たくさんあるので徐々に覚えていきましょう。

変数自体を省略出来たり、型を省略出来ます。

覚え始めや慣れるまでは、下手に省略するよりも丁寧に書くことが大事かと思います。

可読性も上がり、エラーの検知も早くなりますし、コーディングをする上でイメージもしやすくなります。

まずは丁寧にコードを記述することを意識してみてください。

タイトルとURLをコピーしました