我在使用redim preserve调整二维数组的大小时出现问题。 我知道你只能调整第二维度,我确信这就是我正在做的事情。
我在做什么: 我有2张类似的数据,称为Oracle1& Oracle 2 我基本上希望按原样结束Oracle1数据,然后检查Oracle2数据的每一行,如果它不在Oracle1中,则将其添加到数据的末尾。 (不使用数组执行此操作非常简单,但每张表中的8000多行速度很慢)
因此,在下面的测试代码片段中,我将需要的范围加载到2个动态数组中,并像我这样转置范围,以确保我可以调整数组大小以正确地向其添加额外数据。我只需要一次添加一组额外的数据,所以只想将它的大小每次扩展1个。
它在'下标超出范围'错误的redim上失败了,我可以发誓我正确地做了。
帮助!
Set csht = ThisWorkbook.Sheets("Oracle1")
Set psht = ThisWorkbook.Sheets("Oracle")
Set csht2 = ThisWorkbook.Sheets("Oracle2")
carr = Application.WorksheetFunction.Transpose(csht2.Range("A2:N" & csht2.Cells(csht2.Rows.Count, "C").End(xlUp).Row))
parr = Application.WorksheetFunction.Transpose(csht.Range("A2:N" & csht.Cells(csht.Rows.Count, "C").End(xlUp).Row))
parrsize1 = UBound(parr, 1)
parrsize2 = UBound(parr, 2)
ReDim Preserve parr(parrsize1 To parrsize1, parrsize2 To (parrsize2 + 1))
编辑: 感谢下面的Scott。