はじめに
VBAを使い始めたばかりの方が悩む1つが「変数の型ってなに?」です。そこから進むと「IntegerとLongの違いは?」といった疑問も出てきます。
この記事では、VBAでよく使われる変数型(Integer、Long、Double、String、Boolean)の違いや使い分けのコツを、初心者向けにわかりやすく解説します。
変数型とは
変数型とは、「変数にどんな種類のデータを入れるか」を決めるものです。
変数とは数学のXやYのように「何らかの値」を指し、入っている値の種類が、
– 数値なのか
– 小数を含むのか
– 文字列なのか
によって、適切な種類を使い分ける必要があります。
この「値の種類」のことを、「変数型」、と呼びます。
よく使う基本的な変数型一覧
型名 | 説明 | 例 |
---|---|---|
Integer | 小さな整数:-32,768 〜 32,767 の範囲 | 1, 100, -20 |
Long | 大きな整数:-2,147,483,648 〜 2,147,483,647 の範囲 | 30000, 1000000 |
Double | 小数を含む数値。非常に大きな数や非常に小さな数を扱える。 最小値:約 ±4.94 × 10-324 最大値:約 ±1.79 × 10308 |
3.14, -0.01 |
String | 文字列(文章など) | Hello, “123” |
Boolean | 真(True)か偽(False) | True, False |
型ごとの特徴と使い分けのポイント
整数を扱うInteger と Long の違い
Integer型とLong型のどちらも整数を扱う変数型ですが、扱える桁が異なります。
– Integer型:-32,768 〜 32,767 の範囲
– Long型:-2,147,483,648 〜 2,147,483,647 の範囲
32,767を超える数を扱いたいときは Long型 を使いましょう。ただ、Windows10以降ではCPUは高速化されておりLong型一択でも構いません。
最近のVBAでは、最初から Long を使うのがおすすめです。
1 2 |
Dim i As Integer i = 0 |
1 2 |
Dim data As Long data = 12345678 |
なぜ Integer より Long を使うのがおすすめなのか?
VBAには Integer と Long という2つの「整数型」があります。
一見すると Integer の方が軽くて高速そうに思えますが、実はそうでもないのです。
理由1. 内部的には Integer も Long に変換される
VBAは内部的に計算処理などで Integer を Long に自動で変換することが多く、変換を行う処理の分だけかえって処理速度が遅くなるケースもあります。
そのため、「軽いはずの Integer を使ったのに、実際は Long のほうが速かった」ということがよくあります。
以下のページで数値型の速度比較を行っていますが、IntegerよりLongの方が速い結果になっています。
理由2. Integer の上限(32,767)を超えるとエラーになる
Integer は -32,768 〜 32,767 までしか扱えません。
意外とすぐ超えてしまうため、たとえばループでカウントしていて 32,768 を超えた瞬間にオーバーフローエラーが発生し、そこでVBAの処理は止まってしまいます。
理由3. Long は上限が大きいためより安全
Long は -2,147,483,648 〜 2,147,483,647 を使えるので、普通にプログラムを書く上では十分すぎるほどの範囲です。
最近のPCは性能が高いため「最初から Long を使っておけばOK」として整数型のサイズを気にしないでも大丈夫になっています。
結論:Integer を使う理由がない
昔は「メモリの節約」という理由で Integer を使う場面もありましたが、メモリを多く積む現在のPCではメモリの節約になることはほとんどありません。
そのため、最初から 整数を扱うならLong 一択と判断してOKです。
Double:小数を扱うとき
小数点を含む数値を使いたいときは Double を使います。
1 2 |
Dim pi As Double pi = 3.14 |
Single型という小数を扱う変数型があります。Single型はDouble型よりもメモリ使用量が少ないものの、扱えるサイズが小さく、かつ、速度もDouble型よりも遅いためSingle型を使う必要はありません。
そのため小数のデータはDouble型を扱うのが一般的です。
String:文字列を扱うとき
名前やメッセージなどの「文字列」は String 型です。
1 2 |
Dim name As String name = "田中" |
Boolean:True/False の判定に便利
条件に合っているかどうかを判断したいときに使います。
1 2 |
Dim isValid As Boolean isValid = True |
型の指定の仕方
変数を宣言するときに、次のように型を指定できます。
1 2 3 4 5 |
Dim num As Integer Dim price As Long Dim pi As Double Dim name As String Dim isValid As Boolean |
「As 変数型」の部分を省略すると Variant 型となり、どんなデータも入ります。
どのようなデータなのかを分かって使う分には問題ありませんが、初心者あるあるの「とりあえずVariantにしたら動いた」、みたいなのはバグの原因になりやすくなります。
できるだけ型を明示的に指定する習慣をつけましょう。
まとめ
- 小さな整数 → Integer(最近は Long 推奨)
- 大きな整数 → Long
- 小数 → Double
- 文字列 → String
- True/False → Boolean
型を正しく使い分けることで、プログラムがわかりやすくなり、エラーの防止にもつながります。
初心者のうちは、まず基本の型を使いこなせるように練習していきましょう。どんなデータも入るVariant型は便利ですが、型を明示することができるようになると、コードの理解も深まります。