VBA 1004 宏循环执行时出错

标签 vba excel

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

如果不清楚,我会尝试循环所有不是我指定的工作表的工作表,并尝试选择特定范围并将其复制并粘贴到已编译的“定量工作表”

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

最佳答案

您将 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

主要是,你想要avoid using .Select/.Activate确保您更直接地处理数据。

编辑:仅供引用,您可以通过不使用诸如 y=y+1 之类的东西而使用偏移量或lastRow 变量来进一步使其更加动态,但那就是个人喜好,因为它会完成同样的事情。 (我还假设 xab 变量在宏的其他位置使用...

关于VBA 1004 宏循环执行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946514/

相关文章:

python - 将内联图像插入 Lotus Notes 消息中

vba - Word VBA 匹配段落缩进到标题文本

c# - gridview中添加空行的问题

Excel VBA密码保护命令按钮

excel - 如何在多行上重复功能

excel - 如何从标准列表中过滤表格?

excel - 在设置属性之前是否有任何理由检查它是否已设置?

vba - 使用 VBA 以编程方式安装 Microsoft Access 加载项

excel - VBA宏列出多个文件夹中的文件

excel - 具有变体返回类型的 Delphi Excel UDF