ついさっき知った事であるが、VBAにおいては、Integer型を使うパフォーマンス上のメリットは皆無のようだ
最近の VBA のバージョンでは、データ型が整数型と指定されている場合であっても、すべての整数値が長整数型に変換されます。
つまり、Dim x As Integerとしても、内部的にxはLongとして扱われるということ。
にもかかわらず、格納できる値の範囲は-32,768 ~ 32,767である。
むしろIntegerからLongへの変換で若干パフォーマンス上のロスが生じている。
一方、VB.NetではIntegerが整数を扱う標準的な型のような扱いである。
Integer Data Type (Visual Basic)
Integer データ型は、32 ビットのプロセッサでパフォーマンスが最大になります。 他の整数型では、メモリとの間の読み込みと格納により長い時間がかかります。
VB.NetのIntegerが扱える数値は-2,147,483,648 から 2,147,483,647であり、VBAのLong型と同じである。
ではVBAで整数を扱う場合は常にLongを使うべきかというと、私はそうは思わない。
どの言語でも、整数を扱う標準的な型は"Integer"または"Int"である。
整数の英訳はIntegerなので、まあ当たり前である。
であれば、-32,768 ~ 32,767の範囲に収まる処理においては、パフォーマンス上のメリットが無かったとしても、やはり標準的な"整数型"を指定し、これに収まらない場合に"長整数型"を用いるのが自然なプログラミング作法であると思う。
初心者にとって、Integer型のオーバーフローは型について学ぶ格好の材料になるし、ベテランにとってはLongかIntegerかで処理の規模感がわかる。
100回にも満たないループのカウンタに"長整数型"を使うのは不自然だ。
じゃあByte型はどうかというと、これも基本的には使わない。
以下、MSDNから引用
ただし、バイト型は一般的に文字列を対象にした作業で使用されます。
上記のとおり、Byte型は整数を扱う一般的な方法ではない。
整数を扱う場合、基本はInteger型、それを超える分はLong型。
今後もこの普通のスタンスでいこうと思う。