【ExcelVBA入門】整数を扱うためのLong型の使い方を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで整数を扱う変数の型を知っていますか? 整数につかえる型の一つに、Long型があります。

そこで今回は、

  • 変数の型とは?
  • Long型の使い方

といった基礎的なことから、

  • Long型を使ったサンプルコード
  • Integer型とLong型の違い・使い分け方法
  • 全ての値に使える変数の型Variant型とは

といった応用的な方法まで、徹底的に解説します!

目次

変数の型とは

変数とは、値を保存しておくことができる箱のようなものです。値を入れたり、使ったりすることができます。次のように書くことで、変数を使うことができます。

Dim 変数名 as 型名
変数名 = 値

型名で整数、小数、文字列など何を入れる箱なのか宣言してから、値を入れて使います。例えば、次のようなイメージです。

変数サンプルコード:

Sub Test()
  Dim lngData1 As Long      '整数
  Dim dblData2 As Double    '小数
  Dim strData3 As String    '文字列
  
  '変数に値を入れる
  lngData1 = 10
  dblData2 = 3.14
  strData3 = "こんにちわ"
  
  '変数の値をメッセージで確認
  MsgBox "lngData1:" & lngData1 & vbCrLf & _
         "dblData2:" & dblData2 & vbCrLf & _
         "strData3:" & strData3
 
End Sub

実行結果:

このように、「Dimで変数の名前と型を決める → 変数に値を入れる → 使いたい場所で変数名を使う」の流れで簡単に変数を使うことができます。

変数の中でも、数値を使うときにLong型はとても便利なので、今回はLong型の使い方に特化して解説します! その他の変数の使い方について知りたい方は、以下で詳しく解説しているので見てみてくださいね!

Long型の使い方

次に、Long型の基礎的な使い方について解説します。先ほど説明した通り、Long型は次のように使います。

Long型の使い方:

Dim 変数名 as Long
変数名 = 数値

Long型を使ったサンプルコードを用意しました。

サンプルコード:

Sub Test2()
  Dim lngNum As Long           '個数
  Dim lngCost As Long          '1個当たりのコスト
  Dim lngTotalCost As Long     '合計金額
  
  '変数に値を入れる
  lngNum = 5
  lngCost = 100000
  
  '合計金額を計算
  lngTotalCost = lngNum * lngCost
  
  '合計金額をメッセージで確認
  MsgBox "合計金額:" & lngTotalCost
 
End Sub

実行結果:

このサンプルでは、lngNum(個数)とlngCost(1個当たりのコスト)をLong型の変数にして値を入れた後に、lngTotalCost(合計金額)をlngNum、lngCostをかけた値で計算して、合計金額をメッセージで表示しています。

このように、値を入れて計算で使うことができるので、変数はとても便利ですね。

【素朴な疑問】Integer型とLong型どちらを使えばいいんだろう?

Long型と同じ整数を扱う変数に、Integer型があります。初めて変数を使うと、

Integer型とLong型はどうやって使い分けるんだろう・・・?

と悩む方が多いので、簡単な違いと使い分け方について解説します。Integer型とLong型の大きな違いは、変数に入れることができる桁数です。以下のように、型ごとに使える最大桁数が違います。

Integer型とLong型で使える桁範囲:

  • Integer型:-32,768 ~ 32,767
  • Long型 :-2,147,483,648 ~ 2,147,483,647

Integer型は桁数が少なく、Long型が多いですね。一般的に変数は以下のような考え方があります。

「データ型によって変数宣言時に消費するメモリが違うため、無駄に大きいサイズの変数の型を使うのは良くない」

ただ、Integer型とLong型に関しては、公式で以下のように発表されています。

最近のバージョンでは、Integer型として宣言されていても、VBAはすべての整数値をLong型に変換します。したがって、Integer変数を使用するとパフォーマンス上の利点はなくなります

引用:https://msdn.microsoft.com/en-us/library/aa164754(office.10).aspx

そのため、整数を扱う場合は全てLong型でOKです! ちなみに、Integer型とLong型の速度比較をしている以下のような記事がありますが、Long型の方が処理速度も速い結果になっています。
【ExcelVBA】Integer型 VS Long型、速いのはどっち?【Vol.1】

公式でもLong型を推していて、速度も速いのでLong型一択でOKですね!

変数の型を覚えるのが苦手な方へ

ここまでLong型の使い方に特化して解説してきましたが、変数の型は他にもたくさんあるため、最初は覚えるのが大変だったりしますよね。そんなときは、Variant型を使うのがおすすめです!

「値が変数に入るときに自動で型が決まる型」なので、型を意識せずに変数を作ることができます。Variant型の使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

まとめ

今回は、VBAでLong型を使う方法について解説しました。公式でも解説されている通り、整数の変数を作るときはLong型一択でOKです!

ぜひ使ってみてくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次