本帖最后由 凌文 于 2015-9-13 19:25 编辑
yorkchenshunan 发表于 2015-9-13 17:35
ar1是二位数组,将A5:K?的数据写入了AR1,其中K?的?为B列最下一行的行号。你如果不知道为什么出错,将错误 ...
但是只能是编辑代的页面中通过,到了按钮页,就报错 ,(UBound(ar2)=35, ar1(i, 1) = ar2(i, 1) ,中的i=36)而实际UBound(ar2)=35 只有35 报不下标越界
我重新用你的代码的表中,只有35条记录,
修改了一下,通过了
Application.DisplayAlerts = FalseDim wb As Workbook
Dim ar1, ar2 ', i%, j%
Dim i As Long
Dim j As Long
ar1 = Range(Range("a2"), Range("b5").End(xlDown).Offset(, 9))
Set wb = Workbooks.Open(ThisWorkbook.Path & "\Book2.xlsx")
ar2 = Range(Range("a2"), Range("a2").End(xlDown).Offset(, 69))
For i = 1 To UBound(ar1)
For j = 1 To UBound(ar2)
If ar1(i, 2) = ar2(i, 2) Then //这一行代码不能理解功能上,
ar1(i, 1) = ar2(i, 1)
ar1(i, 3) = ar2(i, 3)
ar1(i, 4) = ar2(i, 25)
ar1(i, 5) = ar2(i, 13)
ar1(i, 6) = ar2(i, 48)
ar1(i, 7) = ar2(i, 56)
ar1(i, 8) = ar2(i, 60)
ar1(i, 9) = ar2(i, 68)
ar1(i, 10) = ar2(i, 20)
ar1(i, 11) = ar2(i, 23)
Exit For
End If
Next j
Next i
wb.Close False
Range("a5").Resize(UBound(ar1), UBound(ar1, 2)) = ar1
Application.DisplayAlerts = True
|