2017-06-06 217 views
1

このコードでbizzareオーバーフローメッセージエラーが発生しましたが、その理由を理解できません。 助けてくれますか?私は別のvbaモジュールで全く同じコードを使用しています。VBA:多次元配列配列のオーバーフローエラー

Dim tab_base As Variant 
tab_base= Worksheets("Test").Range("A1:AL1492").Value 

おかげで、

イスマイル

答えて

3

あなたは範囲内のいくつかの無効な細胞を持っている必要があります。ほとんどの場合、値が大きすぎるか負の値を持つDateという形式のセルがあると思われます。

安全な側にあり、フォーマットから独立した数値を取得するには、推奨.Value2を使用してください。だから、

tab_base= Worksheets("Test").Range("A1:AL1492").Value2 

は、その後、あなたがいずれかの文字列や数値など、アレイ内のすべてのもの(:数日のために)を取得してみてください。後で必要に応じて数値を日付に変換できますが、その前にエラーをチェックすることもできます。例えば

は、これまでにこのような何かいくつかのセルを変換する前に:

Dim d As Date 
On Error Resume Next 
d = tab_base(i, j) 
if Err.Number <> 0 Then ' invalid date, this was a cell causing overflow 

がPS:Err.Number = 6場合などをチェックし、それが技術的に

+1

(THXマットの)あなたが本当に日付オーバーフローを持っていた意味しますそのコメントは 'Err.Number = 6'のときにのみ有効です;-) –