17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

わざわざ教わらない当然のこと

社会人になってから特に感じますが、「当たり前のことすぎて、わざわざ教わることも自身で調べるタイミングもない」事象って多いですよね。

今回は完全にそのパターンです。

多くの方にはそんなことも知らないのか!と思われるかもしれませんが、意外に知らない人もいるよという話ができたらと思います。
(また、同じく知らない方・初めて触れる方へ届きますように……。)

VBAで整数 ⇒Long型でよし!

他にも種類はありますが、整数を扱う型というとInteger型とLong型が代表的かと思います。(私はそう思っています。)

型名 データ型 範囲
Integer 整数型 -32,768 ~ 32,767
Long 長整数型 -2,147,483,648 ~ 2,147,483,647

「パフォーマンス向上のため、無駄に大きい範囲の型にしない方がいい」と認識していたので、今までVBAでも普通にInteger型を使っていました。

先日オーバーフローのエラーが発生したのですが、原因は予想以上に取り込むデータが多く、計算結果がInteger型の範囲を超えてしまったという初歩的なミスでした。(完全に見通し不足。)

それを見た先輩に 「VBAでIntegerは使わないよ」 と言われ、そうなの!?と驚いたことが今回の記事の発端です。

そもそもVBAでInteger型を使っても意味ない

以下、Microsoftのサイトから引用したものです。

image.png

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

この記載、完全にInteger型使う意味ないですね!
2014年の記事なので、少なくともVBAでInteger型を使う意味がなくなってから10年は経っているということ。全然知らなかった……。

オーバーフローの心配をなくすためにも、莫大でない整数ならLong型にしていきましょう。
(という認識で合ってますかね?)

整数はとりあえずLong型!Integer型は使わない。

「当然」を少しずつ学んでいく

経験者にとっては当たり前の事実も、意外に知らない人は多いかもしれません。
初心者ならではの学びは積極的に発信していきたいと思います。

有識者の方、ご教示いただけると幸いです!

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?