【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型の使い方に特化して解説します! その他の変数の使い方について知りたい方は、以下で詳しく解説しているので見てみてくださいね!

【VBA入門】変数をDimで宣言し、 Asでデータ型を定義する方法
更新日 : 2019年10月1日

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型の使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA】Variant型の使い方とは?配列で使う方法・注意点も解説!
更新日 : 2018年9月30日

まとめ

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

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

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説