VBA 1004循环执行宏时出错

Bez*_*Bez 7 excel vba excel-vba

任何人都可以告诉我为什么我会在以下代码中收到1004错误?

如果不清楚,我正在尝试循环所有不是我命名工作表的工作表并尝试选择特定范围并将其复制并粘贴到已编译的"Quant Sheet"中

Dim ws As Worksheet
Dim x As Integer 
Dim y As Integer
Dim a As Integer
Dim b As Integer
Set ws = Worksheets("Quant Sheet")
x = 1
y = 3
a = 3
b = 2

Worksheets("Quant Sheet").Activate
For Each ws In ActiveWorkbook.Worksheets
If (ws.Name <> "Quant Sheet") Then

   ws.Range("A3").Select
   Selection.Copy
   Sheets("Quant Sheet").Select
   Cells(y, 1).Select
   ActiveSheet.Paste
   y = y + 1


End If

Next ws
Run Code Online (Sandbox Code Playgroud)

Bru*_*yne 6

您设置WS为,Worksheets("Quant Sheet")但然后使用相同的变量ws在循环中使用.这可能导致了这个问题.

试试这个:

Dim ws As Worksheet, mainWS As Worksheet
Dim x As Integer, y As Integer, a As Integer, b As Integer
Set mainWS = Worksheets("Quant Sheet")
x = 1
y = 3
a = 3
b = 2

For Each ws In ActiveWorkbook.Worksheets
If (ws.Name <> "Quant Sheet") Then
   ws.Range("A3").Copy Destination:=mainWS.Cells(y, 1)
   y = y + 1
End If

Next ws
Run Code Online (Sandbox Code Playgroud)

主要是,您希望避免使用.Select/.Activate确保您更直接地使用数据.

编辑:仅供参考,您可以通过不使用类似的东西来进一步使其更具动态性y=y+1,而是使用偏移量或lastRow变量,但这是个人偏好,因为它将完成同样的事情.(我也假设了x,ab变量在宏别处使用...

  • 这是一个新问题.反转您的编辑并创建一个新问题.在新问题中,指定是仅需要值还是值和格式.你不能在不调用#REF的情况下转换公式!错误.此外,蝙蝠侠有什么问题?(哎呀!) (3认同)