Excel VBA

VBAの整数型Integerがわかる!Long型・Byte型との違いも解説

VBAにおけるデータ型は複数あり、Integer型は整数を指定できるデータ型の1つです。ですが、整数を指定できるものはByte型やLong型などもあるので、分かりにくい人もいるのではないでしょうか。

この記事では、VBAのInteger型について解説していきます。Byte型やLong型との違いも解説するので、Integer型で悩んでいる方は参考にしてみてください。

Integer型について

最初に、VBAで整数を指定するデータ型Integerについて解説します。
Integer型について理解しておくことでByte型やLong型との違いも分かりやすくなるので、しっかり確認しておいてくださいね。

変数とは

Integer型について解説する前に、まずは変数とは何かを解説します。

変数とは、データにつけるラベルのようなものです。変数にデータを入れておくと分かりやすい名前に変更できたり、同じデータを使い回したりできるようになります。何度も同じ数値を入力しなくてもいいので、見やすいコードにもなります。

プログラミングを学習していると、変数はよく箱に例えられます。何を箱に入れるかを指定する必要があり、今回解説するInteger型は箱の中に整数を入れていることを意味します。

他のデータ型には、小数点を指定するものや日付を指定するものなどがあります。

Integer型の基本形

それでは、実際にInteger型を使う場合について解説していきます。

1. Dim 変数名 As Integer
2. 変数名 = 数値

これが変数がInteger型の整数であることを指定する形です。

まず、1行目の「Dim 変数名」で変数を宣言します。ここで指定する変数名は分かりやすい名前にしておきましょう。
次に「as Integer」として、宣言した変数がInteger型であることを指定します。ここではInteger型としていますが、他のデータ型を指定することもできます。データ型を指定しない場合は自動的にVariant型になります。

Variant型はすべてのデータに対応した形ですが、自動的にデータ型が判断されるためエラーの原因となります。問題が発生したときに原因を見つけ出すことも難しくなるため、可能な限りデータ型を指定しましょう。

2行目では名前をつけた変数に任意の数値を代入できます。この操作は変数の「初期化」と呼ばれ、次のように変数の宣言と初期化を同時に行うこともできます。

Dim 変数名 As Integer: 変数名 = 数値

上記で解説した構文がInteger型を使用するときの基本的な形になります。
それでは、実際のコードを確認してみましょう。

Integer型の使い方をコードで解説

それでは、Integer型を使用したコードを解説していきます。


上のコードを実行してみると、A1セルに数値「100」が表示されます。

実行結果

では、このコードの中身を解説していきますね。

1.Sub Test()
2.Dim a AS Integer
3. a = 100
4.Range("a1")= a
5.End Sub

まず、1行目でプロシージャを宣言しています。プロシージャとは、VBAの命令文を1つにまとめたものです。上の例では「Test」という名前のプロシージャを宣言しています。2行目では変数を宣言・データ型を指定しており、上の例ではInteger型の変数「a」を宣言していますね。

3行目で変数「a」に数値100を代入し、4行目ではA1セルに変数「a」の値を表示させています。5行目ではプログラムを終了しています。

ここまで解説したように、Integer型の変数を宣言するには「Dim 変数名 As Integer」の形で変数名を指定するだけです。

整数のデータ型を比較

ここまでは整数のデータ型としてとくにInteger型について解説してきましたが、整数のデータ型として使われるものは3つあります。
それぞれのデータ型を次の表に示しています。

型名 データ型 消費メモリ 値の範囲
Byte バイト型 1バイト 0~255の整数
Integer 整数型 2バイト -32,768 ~ 32,767の整数
Long 長整数型 4バイト -2,147,483,648~2,147,483,647
の整数

Byte型、Integer型、Long型の違い

上の表の通り、整数を表す3つのデータ型は消費メモリや扱える数値の範囲が異なるのです。

「消費メモリ」はコンピュータがデータを処理するのに必要なメモリを表しています。Byte型が1バイトと少なく、Long型が4バイトと大きくなっています。

また、消費メモリに比例して、扱える整数値の範囲が大きくなります。Byte型は「0~255」、Integer型は「-32,768~32,767」、Long型は「-2,147,483,648〜2,147,483,647」となっています。

まとめると、Byte型は「指定できる範囲が狭いが消費メモリが少ない」、Long型は「指定できる範囲が大きいが消費メモリが多い」ことになります。

Integer型は消費メモリがByte型とLong型の間で、「-32,768~32,767」の数値が指定できることになりますね。

今回はByte型についても解説しましたが、実際のプログラムではByte型はあまり使われず、Integer型かLong型を使用している場合が大半です。

整数を指定するときはLong型が一般的

ここまでInteger型の使い方について説明してきましたが、実際に整数を使うときにはLong型が主流になってきています。

最近のバージョンではInteger型を指定しても自動的にLong型に変換されるようになっています。ソースコードが長い場合には、Integer型をLong型に変換する手間のために処理が遅くなる可能性もあります。
実際のコードで整数型の変数を使用するときには、処理を高速化するため、Long型を指定するようにしましょう。

Integer型とLong型のことはマイクロソフトの公式ページでも説明されていますので、気になった方は確認してみてくださいね。

Integer型とLong型が分けられた理由

Integer型もLong型も整数を指定するという役割は変わりません。では、なぜByte型、Integer型、Long型に分けられることになったのでしょうか。

それは、昔のパソコンではメモリ容量が少なかったため。当時はメモリ使用量の少ないByte型・Integer型が主に使用されていました。

しかし最近ではパソコンのメモリ容量が増えているため、メモリを節約してByte型やInteger型を指定する必要がなくなってきているのです。そのため、整数のデータ型を指定するときはLong型が基本になっています。

パソコンが変化していくと同時にプログラムも変わってきているということになりますね。

Integer型とLong型の使い方の違い

それでは実際にLong型を使う際の基本形について説明します。
基本の使い方はInteger型と変わりません。

1.Dim 変数名 As Long
2. 変数名 = 数値

Integer型の場合と異なる点は、変数名の後が「As Long」になっていることだけです。

実際に「Integer」を「Long」に変更して実行してみると以下の通りになります。


実行結果は先ほどと同じで、A1セルに数値「100」が表示されます。

このように、Long型もInteger型と同じように扱えるため、実際にコードを書くときはLong型でコードを記述しましょう。

データ型の数値範囲を超えた場合

ここまで説明した通り、Integer型とLong型は整数のデータ型を指定するのに使われますが、どちらも指定できる数値の範囲が決められています。
そこで、実際に指定できる範囲を超えて数値を入力するとどうなるのかを検証していきます。

まずは、Integer型から見ていきましょう。


先ほどInteger型の使い方を説明したときと同じプログラムで、Integer型の変数「a」に代入する数値をInteger型の範囲外である「33000」に変更しました。これを実行してみると次のようになります。


「オーバーフローしました。」というエラーメッセージが表示され、エラーが出ています。「デバッグ」をクリックしてみると、3行目が問題であることが分かります。


では、変数「a」をLong型にして実行してみましょう。実行結果は次の通りです。


問題なく数値が表示できました。
Integer型ではエラーが出ましたが、データ型をLong型に変更するとエラーは出ませんでした。

次にLong型で範囲外の数値を指定してみます。
Long型の変数「a」に代入する数値を、Long型の範囲外である「2,200,000,000」に変更して実行してみましょう。


同様にオーバーフローとなりエラーが出ています。確認のため、デバッグも行いましょう。


このように、範囲外の数値を入力した場合はオーバーフローとなりエラーが出てしまうので気をつけましょう。

Long型の数値を超える場合

数値を超えて処理を実行するとオーバーフローとなり、エラーが出ることが分かりました。ですが、実際のプログラムの中でLong型の範囲を超えた数値を扱いたいこともあります。

Long型の範囲を超える場合に使用できるのが、LongLong型です。LongLong型の情報を示しておきます。

型名 データ型 消費メモリ 値の範囲
LongLong 超長整数型 8バイト -9,223,372,036,854,775,808~9,223,372,036,854,775,807の整数

LongLong型は扱える値の範囲がかなり広くなっています。

Long型でオーバーフローする場合にはLongLong型を使用することでオーバーフローを回避できます。
先ほどLong型でオーバーフローしてしまった値「2,200,000,000」をLongLong型の変数に入れて実行してみましょう。


LongLong型を指定することで、Long型で扱えない範囲の整数値についても正しく表示させることができました。
LongLong型を使うことは少ないですが、Long型で処理できない場合はLongLong型で対応できます。

LongLong型の注意点として64bitのOfficeでしか使用できないので、32bit版を使用している場合は注意しましょう。

まとめ

変数に整数を指定できるデータ型Integer型について解説しました。
マイクロソフトが声明を出している通り、整数のデータ型を指定するときはInteger型ではなく、Long型を使用するのが一般的になってきているので注意が必要です。

一部のプログラムでは現在もInteger型が使われているので、この記事でInteger型について学習しておいてくださいね。

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。