【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だけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。

おすすめコンテンツ

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

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