Run-time error 1004 in VBA-Excel when Copying Rows
我刚刚学习了一些VBA,以便制作一些耗时的报告。 仅当我的原始数据低于100000行时,VBA才能完美运行。 如果行数超过100000,则会引发错误:
RUN-time error '1004' -
Method 'Range' of object'_Global' failed
我写的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Sub OSP_UntouchedReport() Dim Magisk As Long With ActiveSheet Magisk = .Cells(.Rows.Count,"A").End(xlUp).Row End With Sheets("RAW").Select Range("BI1").Value = ("LDAP MAP") Range("BI2").FormulaR1C1 ="=VLOOKUP(RC[-2],Reference!C[-52]:C[-51],2,0)" Range("BI2").AutoFill Destination:=Range("BI2:BI" & Magisk) Range("BI2:BI" & Magisk).Copy Range("BI2:BI" & Magisk).PasteSpecial xlPasteValues Application.CutCopyMode = False Range("BI1").AutoFilter Field:=61, Criteria1:="#N/A" Range("A1:BI1" & Magisk).Copy Sheets.Add.Name ="NA" Sheets("NA").Paste Application.CutCopyMode = False Sheets("RAW").Select Range("BI1").AutoFilter Field:=61, Criteria1:="<>#N/A" Range("A1:BI1" & Magisk).Copy Sheets.Add.Name ="MAPPED" Sheets("MAPPED").Paste Application.CutCopyMode = False Sheets("RAW").Select Cells.AutoFilter |
谢谢!
这行在这里:
1 | Range("A1:BI1" & Magisk).Copy |
实际上会产生类似:
1 | Range("A1:BI1100").Copy |
当Magisk的值为
1 | Range("A1:BI100").Copy |
因此,将行更改为:
1 | Range("A1:BI" & Magisk).Copy |
而且您会没事的。 如有时间,请阅读本文章-如何避免在Excel VBA中使用"选择"