复制行时VBA-Excel中的运行时错误1004

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的值为100时。 并且您期望:

1
Range("A1:BI100").Copy

因此,将行更改为:

1
Range("A1:BI" & Magisk).Copy

而且您会没事的。 如有时间,请阅读本文章-如何避免在Excel VBA中使用"选择"