こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、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型:-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です!
ぜひ使ってみてくださいね!