あるあるエラー:Integer型
VBAを使い始めて少したつと経験するであろうエラーです。
最初のころはよく理解できないままやっているので、
整数を使うときは全部Integer型を使っていました。
しかし徐々に多くのデータを扱い始めると
このようなエラーに遭遇します。
特に今まで問題なかったのに突然このエラーが発生すると
原因がわからず首をひねります。
原因がわからないエラーほど単純な原因だったりします。
このエラー何が原因でしょうか?
Integer型は、-32,768 ~ 32,767 の範囲の整数をとるので
この範囲を超える値をInteger型に入れようとすると
オーバーフローします。
例えばこんなコードで突然このエラーが起きたりします。
Dim i As Integer
For i = 1 To Range ("D1").End(xlDown).Row
'…
Next I
このコードの次の箇所、
Range("D1").End(xlDown).Row
この値が32,767を超えるとオーバーフローします。
この値は、
セルD1から下の方向に
値が連続して入っている一番下の行を返します。
ですから扱う行数が多くなるとFor文に使う変数は
Long型にしなければいけません。
また、上のコードの箇所は
D列に何も値が入っていないときもエラーになります。
D列に何も値が入っていないとき、
上のコードの箇所はシートの最終行数を返すからです。
わかれば単純なんですけど、わからないと
オーバーフローって何?
日本語で言って…
という気持ちになります。
| 固定リンク
この記事へのコメントは終了しました。

コメント