VBAに限らずプログラミングをするには、変数を扱う事は必須となります。
変数のデータ型と、型の指定方法についてご説明します。
データ型はたくさんありますので、最初から全て覚える必要はないと思います。
使用頻度の高いデータ型も併せてご紹介したいと思います。
「変数って何?」という方は「Dim、Publicとは? 変数の宣言と適用範囲」をご覧下さい。
1.データ型とは?
変数は宣言とは「Dim 変数名 as データ型」や「Public 変数名 as データ型」と書きます。
宣言する際に、「この変数は文字だよ」、「この変数は数字だよ」や「この変数は日付だよ」などと明示してあげます。
この文字、数字、日付の部分をデータ型と言います。
2.データ型の種類
データ型 | コード表記 | データの種類 |
整数型 | 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 | 任意の長さの文字列 |
ブール型 | Boolean | TrueまたはFalse |
バイト型 | Byte | 0~255までの整数 |
オブジェクト型 | Object | オブジェクト |
バリアント型 | Variant | すべてのデータ |
一番下のVariant型は全てのデータ型を格納できます。
また、Varinatは「as Varinat」を省略して 「Dim 変数名」のみで記載することも可能です。
3.最初に覚えるのはこの3つ
データ型はたくさんありますので、慣れるまではこの3つで良いと思います。
- 文字列:String
- 整数:Long
- なんでも:Variant
慣れてきたら、他のデータ型を徐々に覚えていくと良いと思います。
個人的にはDouble(小数)、Date(日付)、Boolean(True/False)もよく使用します。
4.データ型の指定方法
データ型は「Dim 変数名 as データ型」のas の後ろの型の部分で指定します。
myStrとmyIntは変数名ですので、任意です。
Option Explicit
Sub Sample()
Dim myStr As String '文字列型
Dim myInt As Long '整数型
myStr = "あいうえお" '文字を格納(※文字は""で囲います)
myInt = 12345 '数値を格納
MsgBox myStr & myInt'MsgBoxはダイアログボックスに表示する関数です。
End Sub
また、次の様にたくさん宣言する場合には、変数を連続して記載出来ます。
Option Explicit
Sub Sample()
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
5.データ型を指定する理由
何でも対応出来るVariantがあるのに、なぜわざわざLongやStringなど指定する必要があるのでしょう。
正直なところ、一部例外はありますが「絶対に厳密に型指定しないとダメ!」という理由はないと思います。
なので、ここからは個人的な意見になります。
予め型の指定がされていると、可読性が高く読みやすく感じます。
特に計算が多いコードや、連結が多いコードを読むときに、この変数には数字が入っているとか、この変数には文字列が入っていると認識出来るだけでも、かなりコードの挙動をイメージしやすくなります。
もし、全てVariantだと、前後のコードから変数にはどんなデータが入るのかを読み取る作業が無意識にも発生します。(意外と疲れます。)
また、エラーの検知も早くなる気がします。
この変数には文字列であるべきとか、数値であるべきと明確なルールが必要な処理の時に 、型を指定する事で違う型のデータが代入されそうになった時にエラーが発生します。
Variantだとエラーが発生しないため、エラーをすぐに検知出来なかったりします。
このような理由で、個人的には型の指定をした方が良いのではないかなと思います。
6.まとめ
変数は、たくさんあるので徐々に覚えていきましょう。
変数自体を省略出来たり、型を省略出来ます。
ですが、覚え始めや慣れるまでは、下手に省略するよりも丁寧に書くことが大事かと思います。
可読性も上がり、エラーの検知も早くなりますし、コーディングをする上でイメージもしやすくなります。
面倒ですが、まずは丁寧を意識してみては如何でしょう。