Subオーバーフローとは、定められた許容範囲を超えたときに発生するエラーです。上のコードで、変数Nは整数型(Integer)で宣言しています。整数型の変数には、-32,768から32,767までの整数しか入れられません。その許容範囲を超えて32768を入れようとしたためにエラーが起こりました。注意しなければならないのは、次のようなケースです。今度は変数Nを長整数型(Long)で宣言しました。長整数型は、-2,147,483,648から2,147,483,647までの整数を格納できる型です。次のコードはエラーになります。長整数型の許容範囲からすれば、余裕の数値です。ところが、次のコードはエラーになりません。Sub「=」演算子で、右辺を左辺に代入するとき、VBAはまず右辺の計算結果を確定させます。エラーになったSample2で、右辺の「330」と「100」は、どちらも整数型(Integer)の許容範囲内の数値です。整数型」という式ですね。整数型」の計算結果を、まず同じ整数型に入れようとします。整数型の許容範囲は32767までです。整数型の許容範囲を超えているので、右辺の計算過程において「オーバーフローしました」ということです。100」を計算しています。「35000」は整数型の許容範囲を超えています。これは、長整数型の数値です。このときVBAは、大きい方の長整数型に、計算結果を入れようとします。計算結果は3500000で、長整数型の許容範囲内です。それを、左辺の変数N(長整数型)に入れるのですから、何も問題はありません。めったにあることではありませんが、VBAにはこのような特徴があります。整数型」にしてやればいいです。こんなときに使うのがCLng関数です。