VBA:多维数组init

时间:2017-06-06 16:28:27

标签: excel vba

我的代码出现了一个bizzare溢出消息错误,我无法理解原因。 能否请你帮忙 ?我在另一个vba模块中使用完全相同的代码并且它可以工作。

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

谢谢,

伊斯梅尔

1 个答案:

答案 0 :(得分: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

p.s:检查例如Err.Number = 6,这意味着你真的有一个日期溢出(thx Mat's)