機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > Excel 2007レビュー

Cells.Countがオーバーフロー



マクロでCells.Countを取得しようとするとオーバーフローします。これは、ベータ版で発見して報告したバグですが、製品版でも直っていないようです。残念。

たとえば、次のコードはエラーになります。



オーバーフローしているのは黄色い行です。



これは当然ですね。Long型では入るはずがありません。
しかし、受ける変数をDoubleに変えても



それならバリアント型では



いずれにしてもエラーです。
ここでは、Cells.Countを変数に代入していますが「MsgBox Cells.Count」でも「Debug.Print Cells.Count」でも「If Cells.Count > 1 Then」でもオーバーフローします。
どうやら、そもそもCellsのCountが怪しいようです。
オブジェクトライブラリで調べてみると



なるほど、Countプロパティ自体がLong型で宣言されているのですね。Excel 2007はワークシートの領域が広がりましたので、全セルの合計は17,179,869,184個です。Long型の許容値2,147,483,647を楽に超えています。おそらくこれが原因でしょう。

ちなみに、次のようなコードもオーバーフローします。



ここまでのマクロは標準モジュールに書きました。これをSheet1などのシートモジュールに書くと、エラー表示が異なります。



これではデバッグもできませんね。
もっとも、なぜか次のように明示的にWorksheetオブジェクトを指定してやると、全行数×全列数の計算結果は取得できるようです。理由は調べていませんが、不思議ですね・・・てゆーか、早いとこ直して欲しいです。








このエントリーをはてなブックマークに追加