如下面这段代码,如果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)单元格开始写在同一行两个连续单元格!
如果实在不行,试着给单元格设置个时间格式试试,如:
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)单元格开始写在同一行两个连续单元格!
温馨提示:答案为网友推荐,仅供参考