excel vba 定义数组时什么时候需要带括号定义长度,什么时候不需要?

如下面这段代码,如果arr3不定义范围就会报错,麻烦老师解释一下,十分感谢。

Sub test003()

Dim d As Object
Dim arr, arr1, arr2, arr3(1 To 1000, 1 To 2)

Set d = CreateObject("scripting.dictionary")

arr = Range("A2:C6")

For i = 1 To UBound(arr)

d(arr(i, 1) & "-" & arr(i, 2)) = d(arr(i, 1) & "-" & arr(i, 2)) + arr(i, 3)

Next i

arr1 = d.Keys

For y = 0 To UBound(arr1)

arr2 = Split(arr1(y), "-")
arr3(y + 1, 1) = arr2(0)
arr3(y + 1, 2) = arr2(1)

Next y

Range("A9").Resize(d.Count, 2) = arr3
Range("C9").Resize(d.Count, 1) = Application.Transpose(d.Items)

03版中测试楼主代码也是正确的,高一级版本应该对03有兼容性,10版本更不消说!
如果实在不行,试着给单元格设置个时间格式试试,如:
Cells(1, 1).NumberFormatLocal = "h:mm:ss"
我用10版检测过楼主的代码,显示正常,值得注意的是操作系统是WIN7。
说明你的10版软件可能出问题了!
如果要把Arr1的数据写入单元格Cells(2, 1),、Cells(2, 2)中,不能如楼主那样写代码哦:
Range(Cells(2, 1), Cells(2, 2)) = Arr1
一是分开写
Cells(2,1)=Arr1(1)
Cells(2,2)=Arr1(2)
二是用单元格区域方式一次性写入:
Cells(2,1).Resize(1,2)=Application.Transpose(Arr1)
也就是说从把Arr1转置为行从Cells(2,1)单元格开始写在同一行两个连续单元格!
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网