VBAのLong型を使って大きな整数を扱う方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Longの概要

整数型(Long) VBAの予約語

Long

概要 Long 型は、VBAで使用される整数型のデータ型の一つで、より大きな数値を扱うことができます(-2,147,483,648 から 2,147,483,647 まで)。

わかりやすく説明 Long は、「すごく大きな数を扱える整数型」と考えればOKです。通常の Integer では 32,767 までしか扱えませんが、Long を使うと何百万、何億という数も計算できます。

  • 整数(小数なし)を格納できるデータ型。
  • 範囲は -2,147,483,648 から 2,147,483,647 まで。
  • Integer 型よりも大きな数を扱うのに適している。
  • Excelの行番号(1~1,048,576)を扱う際にも利用される。

Longの基本的な使い方

Long 型の変数を宣言して、数値を代入する基本的な例です。

Sub UseLong()
    Dim num As Long
    num = 2000000 ' 200万を代入
    MsgBox "Long型の値: " & num, vbInformation, "Longの例"
End Sub

解説:

  • Dim num As Long でLong型の変数を宣言。
  • Integer型(-32,768 から 32,767)では扱えない 200万 という大きな値を代入可能。
  • メッセージボックスで変数の値を表示。

ExcelでのLongの活用例

Excelの行番号は 1 から 1,048,576 まであるため、行番号を扱う場合は Long 型を使用するのが適切です。

Sub FillColumnWithLong()
    Dim i As Long
    
    ' 1列目に1~50000までの数値を入力
    For i = 1 To 50000
        Cells(i, 1).Value = i
    Next i
End Sub

解説:

  • ループ変数 iLong にすることで、大きな値を処理可能。
  • 1列目(A列)に1~50,000の数値を入力。
  • Integer型(最大32,767)ではループが途中でエラーになるため、Longを使用するのが安全。

LongとIntegerの違い

VBAの Integer 型は範囲が狭いため、大きな値を扱う場合には Long を使用するのが適切です。

データ型 範囲 メモリ使用量
Integer -32,768 ~ 32,767 2バイト
Long -2,147,483,648 ~ 2,147,483,647 4バイト

数値計算でLongを使用

大きな数の計算を行う際にも Long は有効です。

Sub CalculateLargeNumbers()
    Dim a As Long, b As Long, result As Long
    a = 100000
    b = 50000
    result = a * b
    MsgBox "計算結果: " & result, vbInformation, "Longの計算"
End Sub

解説:

  • Integer ではオーバーフローする可能性があるが、Long なら問題なく計算できる。
  • 100,000 × 50,000 の結果(5,000,000,000)は Long の範囲内。

エラーを回避する方法

数値が Long の範囲を超えるとオーバーフローエラーが発生するため、エラーハンドリングを適用します。

Sub SafeLongCalculation()
    Dim x As Long, y As Long, result As Double
    
    x = 2000000000
    y = 2
    
    On Error Resume Next
    result = x * y
    
    If Err.Number <> 0 Then
        MsgBox "オーバーフローエラー発生!", vbExclamation, "エラー"
        Err.Clear
    Else
        MsgBox "計算結果: " & result
    End If
End Sub

解説:

  • 2,000,000,000 × 2 は Long の範囲(2,147,483,647)を超えるため、オーバーフローエラーが発生。
  • オーバーフローを防ぐために、変数を Double に変更するのも有効。

Longの注意事項

  • Longの範囲を超えるとオーバーフローエラー: 最大値(2,147,483,647)を超えないように注意。
  • 計算結果が範囲を超えそうな場合は Double を使う: 大きな数値計算には Double を活用。
  • Excelの行番号を扱う場合は Long が必須: 行番号は最大 1,048,576 なので、Integer では足りない。

よくある質問

Q: Long と Integer はどちらを使うべきですか?
A: 小さい数(32,767 以下)なら Integer、大きな数(それ以上)なら Long を使います。Excelの行操作には Long を推奨します。
Q: Long を使うと処理速度は遅くなりますか?
A: ほぼ変わりません。VBAでは内部的に Integer も Long に変換されるため、Long を使用するのが一般的です。
Q: Long の代わりに Double を使うべきですか?
A: 整数の計算には Long、少数や非常に大きな数を扱う場合は Double を使いましょう。

まとめ

  • Long 型は、大きな整数を扱うためのデータ型。
  • 範囲は -2,147,483,648 ~ 2,147,483,647。
  • Excelの行番号を扱う場合に適している。
  • オーバーフローを防ぐため、必要に応じて Double を使用する。